*/ class Console extends \Asika\SimpleConsole\Console { // Disables the default help handling protected $helpOptions = []; protected $customHelpOptions = ['h', 'help', '?']; protected $subConsoles = [ 'config' => __NAMESPACE__ . '\Console\Config', 'probe' => __NAMESPACE__ . '\Console\Probe', 'po2php' => __NAMESPACE__ . '\Console\PoToPhp', ]; protected function getHelp() { $help = << [] [-v] Commands: config Edit site config probe Probe a single site po2php Generate a strings.php file from a messages.po file Options: -h|--help|-? Show help information -v Show more debug information. HELP; return $help; } protected function doExecute() { if ($this->getOption('v')) { $this->out('Executable: ' . $this->executable); $this->out('Arguments: ' . var_export($this->args, true)); $this->out('Options: ' . var_export($this->options, true)); } $showHelp = false; $subHelp = false; $command = null; if ($this->getOption('version')) { $this->out('Friendica Console version ' . BUILD_ID); return 0; } elseif ((count($this->options) === 0 || $this->getOption($this->customHelpOptions) === true || $this->getOption($this->customHelpOptions) === 1) && count($this->args) === 0 ) { $showHelp = true; } elseif (count($this->args) >= 2 && $this->getArgument(0) == 'help') { $command = $this->getArgument(1); $subHelp = true; array_shift($this->args); array_shift($this->args); } elseif (count($this->args) >= 1) { $command = $this->getArgument(0); array_shift($this->args); } if (is_null($command)) { $this->out($this->getHelp()); return 0; } $console = $this->getSubConsole($command); if ($subHelp) { $console->setOption($this->customHelpOptions, true); } return $console->execute(); } private function getSubConsole($command) { if ($this->getOption('v')) { $this->out('Command: ' . $command); } if (!isset($this->subConsoles[$command])) { throw new \Asika\SimpleConsole\CommandArgsException('Command ' . $command . ' doesn\'t exist'); } $subargs = $this->args; array_unshift($subargs, $this->executable); $className = $this->subConsoles[$command]; $subconsole = new $className($subargs); foreach ($this->options as $name => $value) { $subconsole->setOption($name, $value); } return $subconsole; } }