nur-sery/nur_tbin/test-args3.php

57 lines
1.4 KiB
PHP

<?php # -*- coding: utf-8 mode: php -*- vim:sw=2:sts=2:et:ai:si:sta:fenc=utf-8
require(__DIR__.'/../vendor/autoload.php');
use nur\cli\Application;
use nur\cli\DynamicCommand;
class Test3DynamicCommand extends DynamicCommand {
const COMMANDS = [
"dyn1" => ["d1",
"help" => "dynamic command 1",
"cmd_args" => [
["-o", "--d1-option"],
["-v:", "--d1-value"],
],
],
"dyn2" => ["d2",
"help" => "dynamic command 2",
"cmd_args" => [
["-o", "--d2-option"],
["-v:", "--d2-value"],
],
],
];
}
Application::run(new class extends Application {
const ARGS = [
#"dynamic_command" => [self::class, "get_dynamic_command"],
"dynamic_command" => Test3DynamicCommand::class,
["-o", "--option"],
["-v:", "--value"],
["static", "s",
"help" => "static command",
"cmd_args" => [
["-o", "--s-option"],
["-v:", "--s-value"],
],
],
];
static function get_dynamic_command(string $command): ?array {
switch ($command) {
case "d1": return Test3DynamicCommand::COMMANDS["d1"];
case "d2": return Test3DynamicCommand::COMMANDS["d2"];
default: return null;
}
}
private $option, $value, $args, $command;
function main() {
Txx("option", $this->option, "value", $this->value);
Txx("args", $this->args);
Txx("command", $this->command);
}
});