public function showVersion() { if ($this->commandName) { $versionText = ''; if ($this->commandVersion) { $versionText .= $this->commandVersion . ' '; } $versionText .= $this->commandName; $this->response->addContent(new Heading($versionText)); } if ($this->commandDescription) { $this->response->addContent(new Heading($this->commandDescription)); } }
public function run(Request $request = null) { if (null === $request) { $request = Request::createAuto(); } $this->request = $request; try { if (!$this->command instanceof Command\Application) { throw new Command\Exception('Application required', Command\Exception::INVALID_ARGUMENT); } $this->reader = new RequestReader(); $this->reader->read($request, $this->command->optionsArray()); } catch (Command\Exception $exception) { if (empty($this->reader->values['action'])) { // TODO symbolize 'action' literal $this->response->error($exception->getMessage()); $this->response->addContent('Use --help to show information.'); return $this; } } foreach ($this->reader->values as $name => $value) { $this->command->{$name} = $value; } if (isset($this->command->action)) { $action = $this->command->action; $commandDefinition = $this->command->definition()->actions[$action]; $command = new $commandDefinition->commandClass(); $runner = new \Yaoi\Cli\Command\Runner($command); $runner->commandName = $this->commandName . ' ' . $action; $runner->commandVersion = $this->commandVersion; $runner->commandDescription = $this->commandDescription . ($runner->commandDescription ? PHP_EOL . $runner->commandDescription : ''); $runner->skipFirstTokens = 1; $runner->run($request); } return $this; }