예제 #1
0
 function it_runs_help_for_command(IInput $input, IOutput $output, IConsole $console)
 {
     $input->hasOption('--help')->willReturn(true);
     $input->getArgument('args')->willReturn(['name']);
     $console->parseString('help name')->shouldBeCalled();
     $this->run($input, $output, $console);
 }
예제 #2
0
 /**
  * @param IInput $input
  * @param IConsole $console
  *
  * @return ICommand
  * @throws AmbiguousCommandException
  * @throws CommandNotFoundException
  */
 protected function findCommand(IInput $input, IConsole $console)
 {
     if ($input->hasArgument('command')) {
         $matcher = new ArgumentsMatcher(new ArgumentsParser());
         return $matcher->findCommand($console->getCommands(), $input->getArgument('command'));
     }
     return $input->getCommand();
 }
예제 #3
0
 /**
  * @param $string
  */
 public function handleArgsString($string)
 {
     $option = $this->createEnvOption();
     $option->parseString($string);
     $this->detectEnvFromOption($option);
     $this->start();
     $this->console->parseString($string);
 }
예제 #4
0
 /**
  * @param IInput $input
  * @param IOutput $output
  * @param IConsole $console
  *
  * @return bool
  */
 public function run(IInput $input, IOutput $output, IConsole $console)
 {
     if ($input->getOption('--version')) {
         $version = $console->getVersion();
         $output->writeLine("<keyword>Application version {$version}</keyword>");
         return false;
     }
 }
예제 #5
0
 function it_renders_without_Commands(IConsole $console)
 {
     $console->getCommands()->willReturn([]);
     $input = new Input();
     $output = new Output();
     $output->setEnableBuffering(true);
     $this->beConstructedWith($input, $output);
     $this->render($console);
 }
예제 #6
0
 /**
  * @param IInput $input
  * @param IOutput $output
  * @param IConsole $console
  *
  * @return bool
  */
 public function run(IInput $input, IOutput $output, IConsole $console)
 {
     if ($input->hasOption('--help')) {
         $args = $input->getArgument('args');
         $subject = array_shift($args);
         $console->parseString("help {$subject}");
         return false;
     }
 }
예제 #7
0
 function it_runs(IInput $input, IConsole $console)
 {
     $console->getCommands()->willReturn([new Command('test')]);
     $input->hasArgument('command')->willReturn(true);
     $input->getArgument('command')->willReturn('test');
     $output = new Output();
     $output->setEnableBuffering(true);
     $this->run($input, $output, $console);
 }
예제 #8
0
 /**
  * @param IConsole $console
  */
 public function render(IConsole $console)
 {
     $title = $console->getTitle();
     $description = $console->getDescription();
     if ($title === null) {
         $title = 'Console application';
     }
     if ($description === null) {
         $description = 'A unified console for all kinds of commands';
     }
     $this->output->writeLine("<keyword>{$title}</keyword>");
     $this->output->writeLine($description);
 }
예제 #9
0
 /**
  * @param IConsole $console
  */
 public function render(IConsole $console)
 {
     $facts = $this->gatherFacts($console->getCommands());
     if (count($facts) > 0) {
         $table = new TableWidget($this->input, $this->output);
         $table->setTitle("<header>Available commands:</header>");
         $headers = [];
         foreach ($facts as $name => $description) {
             if (stripos($name, ':') !== false) {
                 $header = array_first(explode(':', $name));
                 if (!array_contains($headers, $header)) {
                     $headers[] = $header;
                     $table->addSection("<header>{$header}</header>");
                 }
             }
             $table->addRow("<keyword>{$name}</keyword>", $description);
         }
         $this->output->writeLine();
         $table->render();
     } else {
         $this->output->writeLineIndented('There are no commands yet');
     }
 }
예제 #10
0
 /**
  * Render options.
  */
 public function render()
 {
     $table = new TableWidget($this->input, $this->output);
     $table->setTitle("<header>Global options:</header>");
     foreach ($this->console->getCommands() as $command) {
         if ($command->isGlobal()) {
             foreach ($command->getOptions() as $option) {
                 $name = $option->getName();
                 $alias = '   ';
                 if ($option->getAlias()) {
                     $alias = $option->getAlias();
                     if ($option->isIncremental()) {
                         $alias = s('-:a|:a:a|:a:a:a', [':a' => substr($alias, 1)]);
                     }
                     $alias .= ',';
                 }
                 $table->addRow("<keyword>{$alias} {$name}</keyword>", $option->getDescription());
             }
         }
     }
     $this->output->writeLine();
     $table->render();
 }
예제 #11
0
 /**
  * @param IInput $input
  * @param IOutput $output
  * @param IConsole $console
  *
  * @return bool
  */
 public function run(IInput $input, IOutput $output, IConsole $console)
 {
     if ($input->getOption('--passthrough')) {
         $console->setCatchErrors(false);
     }
 }
예제 #12
0
 function it_disables_error_catching(IInput $input, IOutput $output, IConsole $console)
 {
     $console->setCatchErrors(false)->shouldBeCalled();
     $input->getOption('--passthrough')->willReturn(true);
     $this->run($input, $output, $console);
 }