public function trigger() { $target_option = $this->getTarget(); $target_plugin = $this->plugins->getPluginByNamespace($target_option); $child_arguments = new Arguments(array('input' => array_slice($_SERVER['argv'], 2))); $child_arguments->addFlag(array('version', 'v'), '查看版本信息')->addFlag(array('help', 'h'), '查看帮助信息')->addFlags($target_plugin->getFlags())->addOptions($target_plugin->getOptions()); $child_arguments->parse(); if ($child_arguments['help']) { die($child_arguments->getHelpScreen() . PHP_EOL . PHP_EOL); } elseif ($child_arguments['version']) { die($target_plugin->getNamespace() . ':' . $target_plugin->getVersion() . PHP_EOL . PHP_EOL); } else { $children_option = array_keys(array_merge($target_plugin->getOptions(), $target_plugin->getFlags())); $child_option = null; $child_argument_arr = array(); foreach ($children_option as $option) { if (isset($child_arguments[$option])) { $child_argument_arr[$option] = $child_arguments[$option]; } } if (empty($child_argument_arr)) { die($child_arguments->getHelpScreen() . PHP_EOL . PHP_EOL); } else { $target_plugin->exec($child_argument_arr); } } }
$arguments->addOption(['from', 'f'], ['default' => 'en', 'description' => 'Source language (default: en)']); $arguments->addOption(['to', 't'], ['default' => 'cs', 'description' => 'Target language (default: cs)']); $arguments->addFlag(['verbose', 'v'], 'Turn on verbose output'); $arguments->addFlag(['help', 'h'], 'Show help'); $arguments->parse(); $apikey = $arguments['apikey']; $input = $arguments['input']; $output = $arguments['output'] ? $arguments['output'] : __DIR__ . '/../tmp/' . basename($input); $from = $arguments['from'] ? $arguments['from'] : 'en'; $to = $arguments['to'] ? $arguments['to'] : 'cs'; $verbose = (bool) $arguments['verbose']; if ($arguments['help'] || !$apikey || !$input) { echo str_repeat('-', 80) . PHP_EOL; echo 'PO translator parametters ' . PHP_EOL; echo str_repeat('-', 80) . PHP_EOL; echo $arguments->getHelpScreen(); echo PHP_EOL . PHP_EOL; echo 'Example' . PHP_EOL; echo ' potrans -k 123456789 -i members-cs_CZ.po -v'; exit(PHP_EOL . PHP_EOL); } if (!file_exists($input)) { die(Colors::colorize('%rFile "' . print_r($input) . '" not exists %n' . PHP_EOL)); } if (!is_dir(dirname($output))) { mkdir(dirname($output), 0755, true); // Failed to create dir if (!is_dir(dirname($output))) { die(Colors::colorize('%rDirectory "' . dirname($output) . '" not exists %n' . PHP_EOL)); } }