This method is not part of public API and should not be used directly.
public mergeApplicationDefinition ( boolean $mergeArgs = true ) | ||
$mergeArgs | boolean | Whether to merge or not the Application definition arguments to Command definition arguments |
/** * @param Command $command * @param InputInterface $input */ protected function addOptionsToCommand(Command $command, InputInterface $input) { $inputDefinition = $command->getApplication()->getDefinition(); $inputDefinition->addOption(new InputOption(self::DISABLE_OPTIONAL_LISTENERS, null, InputOption::VALUE_REQUIRED | InputOption::VALUE_IS_ARRAY, sprintf('Disable optional listeners, "%s" to disable all listeners, ' . 'command "%s" shows all listeners', self::ALL_OPTIONAL_LISTENERS_VALUE, OptionalListenersCommand::NAME))); $command->mergeApplicationDefinition(); $input->bind($command->getDefinition()); }
/** * @inheritdoc */ protected function describeCommand(Command $command, array $options = []) { $command->getSynopsis(); $command->mergeApplicationDefinition(false); $this->write($command->getName() . "\n" . str_repeat('-', strlen($command->getName())) . "\n"); if ($description = $command->getDescription()) { $this->write("{$description}\n\n"); } $aliases = $command instanceof CommandBase ? $command->getVisibleAliases() : $command->getAliases(); if ($aliases) { $this->write('Aliases: ' . '`' . implode('`, `', $aliases) . '`' . "\n\n"); } $executableName = 'platform'; $this->write("## Usage:\n\n```\n{$executableName} " . $command->getSynopsis() . "\n```\n\n"); if ($help = $command->getProcessedHelp()) { $this->write($help); $this->write("\n\n"); } if ($command->getNativeDefinition()) { $this->describeInputDefinition($command->getNativeDefinition()); $this->write("\n\n"); } if ($command instanceof CommandBase && ($examples = $command->getExamples())) { $this->write('## Examples'); $this->write("\n"); $name = $command->getName(); foreach ($examples as $arguments => $description) { $this->write("\n* {$description}: \n ```\n platform {$name} {$arguments}\n ```\n"); } $this->write("\n"); } }
/** * @inheritdoc */ protected function describeCommand(Command $command, array $options = array()) { $command->getSynopsis(); $command->mergeApplicationDefinition(false); $this->writeText("<comment>Command:</comment> " . $command->getName(), $options); if ($aliases = $command->getAliases()) { $this->writeText("\n"); $this->writeText('<comment>Aliases:</comment> ' . implode(', ', $aliases), $options); } if ($description = $command->getDescription()) { $this->writeText("\n"); $this->writeText("<comment>Description:</comment> {$description}", $options); } $this->writeText("\n\n"); $this->writeText('<comment>Usage:</comment>', $options); $this->writeText("\n"); $this->writeText(' ' . $command->getSynopsis(), $options); $this->writeText("\n"); if ($definition = $command->getNativeDefinition()) { $this->writeText("\n"); $this->describeInputDefinition($definition, $options); } if ($help = $command->getProcessedHelp()) { $this->writeText("\n"); $this->writeText('<comment>Help:</comment>', $options); $this->writeText("\n"); $this->writeText(' ' . str_replace("\n", "\n ", $help), $options); $this->writeText("\n"); } }
private function updateCommandDefinition(Command $command, OutputInterface $output) { $eventDispatcher = $this->getApplication()->getDispatcher(); $input = new ArrayInput(['command' => $command->getName()]); $event = new ConsoleCommandEvent($command, $input, $output); $eventDispatcher->dispatch(GushEvents::DECORATE_DEFINITION, $event); $command->getSynopsis(true); $command->getSynopsis(false); $command->mergeApplicationDefinition(); try { $input->bind($command->getDefinition()); } catch (\Exception $e) { $output->writeln('<error>Something went wrong: </error>' . $e->getMessage()); return; } $eventDispatcher->dispatch(GushEvents::INITIALIZE, $event); // The options were set on the input but now we need to set them on the Command definition if ($options = $input->getOptions()) { foreach ($options as $name => $value) { $option = $command->getDefinition()->getOption($name); if ($option->acceptValue()) { $option->setDefault($value); } } } }
protected function describeCommand(Command $command, array $options = array()) { $command->getSynopsis(true); $command->getSynopsis(false); $command->mergeApplicationDefinition(false); $this->writeText('<comment>Usage:</comment>', $options); foreach (array_merge(array($command->getSynopsis(true)), $command->getAliases(), $command->getUsages()) as $usage) { $this->writeText("\n"); $this->writeText(' ' . $usage, $options); } $this->writeText("\n"); $definition = $command->getNativeDefinition(); if ($definition->getOptions() || $definition->getArguments()) { $this->writeText("\n"); $this->describeInputDefinition($definition, $options); $this->writeText("\n"); } if ($help = $command->getProcessedHelp()) { $this->writeText("\n"); $this->writeText('<comment>Help:</comment>', $options); $this->writeText("\n"); $this->writeText(' ' . str_replace("\n", "\n ", $help), $options); $this->writeText("\n"); } }
/** * Remove workflow option * * @param bool $mergeArgs mergeArgs * * @return void */ public function mergeApplicationDefinition($mergeArgs = true) { parent::mergeApplicationDefinition($mergeArgs); $options = array(); foreach ($this->getDefinition()->getOptions() as $option) { if ($option->getName() !== 'workflow') { $options[] = $option; } } $this->getDefinition()->setOptions($options); }
/** * {@inheritdoc} */ protected function describeCommand(Command $command, array $options = array()) { $command->getSynopsis(); $command->mergeApplicationDefinition(false); $markdown = $command->getName() . "\n" . str_repeat('-', strlen($command->getName())) . "\n\n" . '* Description: ' . ($command->getDescription() ?: '<none>') . "\n" . '* Usage: `' . $command->getSynopsis() . '`' . "\n" . '* Aliases: ' . (count($command->getAliases()) ? '`' . implode('`, `', $command->getAliases()) . '`' : '<none>'); if ($help = $command->getProcessedHelp()) { $markdown .= "\n\n" . $help; } if ($definitionMarkdown = $this->describeInputDefinition($command->getNativeDefinition())) { $markdown .= "\n\n" . $definitionMarkdown; } return $markdown; }
/** * {@inheritdoc} */ protected function describeCommand(Command $command, array $options = array()) { $command->getSynopsis(); $command->mergeApplicationDefinition(false); $this->write($command->getName() . "\n" . str_repeat('-', strlen($command->getName())) . "\n\n" . '* Description: ' . ($command->getDescription() ?: '<none>') . "\n" . '* Usage:' . "\n\n" . array_reduce(array_merge(array($command->getSynopsis()), $command->getAliases(), $command->getUsages()), function ($carry, $usage) { return $carry .= ' * `' . $usage . '`' . "\n"; })); if ($help = $command->getProcessedHelp()) { $this->write("\n"); $this->write($help); } if ($command->getNativeDefinition()) { $this->write("\n\n"); $this->describeInputDefinition($command->getNativeDefinition()); } }
/** * {@inheritdoc} */ protected function describeCommand(Command $command, array $options = array()) { $command->getSynopsis(); $command->mergeApplicationDefinition(false); $messages = array('<comment>Usage:</comment>', ' ' . $command->getSynopsis(), ''); if ($command->getAliases()) { $messages[] = '<comment>Aliases:</comment> <info>' . implode(', ', $command->getAliases()) . '</info>'; } $messages[] = $this->describeInputDefinition($command->getNativeDefinition()); if ($help = $command->getProcessedHelp()) { $messages[] = '<comment>Help:</comment>'; $messages[] = ' ' . str_replace("\n", "\n ", $help) . "\n"; } $output = implode("\n", $messages); return isset($options['raw_text']) && $options['raw_text'] ? strip_tags($output) : $output; }
/** * @param Command $command * * @return \DOMDocument */ public function getCommandDocument(Command $command) { $dom = new \DOMDocument('1.0', 'UTF-8'); $dom->appendChild($commandXML = $dom->createElement('command')); $command->getSynopsis(); $command->mergeApplicationDefinition(false); $commandXML->setAttribute('id', $command->getName()); $commandXML->setAttribute('name', $command->getName()); $commandXML->appendChild($usagesXML = $dom->createElement('usages')); foreach (array_merge(array($command->getSynopsis()), $command->getAliases(), $command->getUsages()) as $usage) { $usagesXML->appendChild($dom->createElement('usage', $usage)); } $commandXML->appendChild($descriptionXML = $dom->createElement('description')); $descriptionXML->appendChild($dom->createTextNode(str_replace("\n", "\n ", $command->getDescription()))); $commandXML->appendChild($helpXML = $dom->createElement('help')); $helpXML->appendChild($dom->createTextNode(str_replace("\n", "\n ", $command->getProcessedHelp()))); $definitionXML = $this->getInputDefinitionDocument($command->getNativeDefinition()); $this->appendDocument($commandXML, $definitionXML->getElementsByTagName('definition')->item(0)); return $dom; }
/** * @inheritdoc */ protected function describeCommand(Command $command, array $options = []) { $command->getSynopsis(); $command->mergeApplicationDefinition(false); $this->writeText("<comment>Command:</comment> " . $command->getName(), $options); $aliases = $command instanceof CommandBase ? $command->getVisibleAliases() : $command->getAliases(); if ($aliases) { $this->writeText("\n"); $this->writeText('<comment>Aliases:</comment> ' . implode(', ', $aliases), $options); } if ($description = $command->getDescription()) { $this->writeText("\n"); $this->writeText("<comment>Description:</comment> {$description}", $options); } $this->writeText("\n\n"); $this->writeText('<comment>Usage:</comment>', $options); $this->writeText("\n"); $executableName = 'platform'; $this->writeText(' ' . $executableName . ' ' . $command->getSynopsis(), $options); $this->writeText("\n"); if ($definition = $command->getNativeDefinition()) { $this->writeText("\n"); $this->describeInputDefinition($definition, $options); $this->writeText("\n"); } if ($help = $command->getProcessedHelp()) { $this->writeText("\n"); $this->writeText('<comment>Help:</comment>', $options); $this->writeText("\n"); $this->writeText(' ' . str_replace("\n", "\n ", $help), $options); $this->writeText("\n"); } if ($command instanceof CommandBase && ($examples = $command->getExamples())) { $this->writeText("\n"); $this->writeText('<comment>Examples:</comment>', $options); $name = $command->getName(); foreach ($examples as $arguments => $description) { $this->writeText("\n {$description}:\n <info>platform {$name} {$arguments}</info>\n"); } } }
/** * {@inheritdoc} */ protected function describeCommand(Command $command, array $options = array()) { $command->getSynopsis(); $command->mergeApplicationDefinition(false); return $this->output(array('name' => $command->getName(), 'usage' => $command->getSynopsis(), 'description' => $command->getDescription(), 'help' => $command->getProcessedHelp(), 'aliases' => $command->getAliases(), 'definition' => $this->describeInputDefinition($command->getNativeDefinition(), array('as_array' => true))), $options); }
/** * @param Command $command * * @return array */ private function getCommandData(Command $command) { $command->getSynopsis(); $command->mergeApplicationDefinition(false); return array('name' => $command->getName(), 'usage' => array_merge(array($command->getSynopsis()), $command->getUsages(), $command->getAliases()), 'description' => $command->getDescription(), 'help' => $command->getProcessedHelp(), 'definition' => $this->getInputDefinitionData($command->getNativeDefinition())); }
/** * Runs the current command. * * If an event dispatcher has been attached to the application, * events are also dispatched during the life-cycle of the command. * * @param Command $command A Command instance * @param InputInterface $input An Input instance * @param OutputInterface $output An Output instance * * @return int 0 if everything went fine, or an error code * * @throws \Exception when the command being run threw an exception */ protected function doRunCommand(Command $command, InputInterface $input, OutputInterface $output) { foreach ($command->getHelperSet() as $helper) { if ($helper instanceof InputAwareInterface) { $helper->setInput($input); } } if (null === $this->dispatcher) { return $command->run($input, $output); } // bind before the console.command event, so the listeners have access to input options/arguments try { $command->mergeApplicationDefinition(); $input->bind($command->getDefinition()); } catch (ExceptionInterface $e) { // ignore invalid options/arguments for now, to allow the event listeners to customize the InputDefinition } $event = new ConsoleCommandEvent($command, $input, $output); $this->dispatcher->dispatch(ConsoleEvents::COMMAND, $event); if ($event->commandShouldRun()) { try { $exitCode = $command->run($input, $output); } catch (\Exception $e) { $event = new ConsoleExceptionEvent($command, $input, $output, $e, $e->getCode()); $this->dispatcher->dispatch(ConsoleEvents::EXCEPTION, $event); $e = $event->getException(); $event = new ConsoleTerminateEvent($command, $input, $output, $e->getCode()); $this->dispatcher->dispatch(ConsoleEvents::TERMINATE, $event); throw $e; } } else { $exitCode = ConsoleCommandEvent::RETURN_CODE_DISABLED; } $event = new ConsoleTerminateEvent($command, $input, $output, $exitCode); $this->dispatcher->dispatch(ConsoleEvents::TERMINATE, $event); return $event->getExitCode(); }
/** * {@inheritdoc} */ public function mergeApplicationDefinition($mergeArgs = true) { $this->decoratedCommand->mergeApplicationDefinition($mergeArgs); }
public function mergeApplicationDefinition($mergeArgs = true) { return $this->innerCommand->mergeApplicationDefinition($mergeArgs); }
public function mergeApplicationDefinition($arguments = true) { // Some ugly hack, because symfony/console is not very extensible :( parent::mergeApplicationDefinition($this->getApplication()->explicit); }
public function mergeApplicationDefinition() { return parent::mergeApplicationDefinition(); }
protected function describeCommand(Command $command, array $options = array()) { $dom = new \DOMDocument('1.0', 'UTF-8'); $dom->appendChild($commandXML = $dom->createElement('command')); $command->getSynopsis(); $command->mergeApplicationDefinition(false); $commandXML->setAttribute('id', $command->getName()); $commandXML->setAttribute('name', $command->getName()); $commandXML->appendChild($usageXML = $dom->createElement('usage')); $usageXML->appendChild($dom->createTextNode(sprintf($command->getSynopsis(), ''))); $commandXML->appendChild($descriptionXML = $dom->createElement('description')); $descriptionXML->appendChild($dom->createTextNode(str_replace("\n", "\n ", $command->getDescription()))); $commandXML->appendChild($helpXML = $dom->createElement('help')); $helpXML->appendChild($dom->createTextNode(str_replace("\n", "\n ", $command->getProcessedHelp()))); $commandXML->appendChild($aliasesXML = $dom->createElement('aliases')); foreach ($command->getAliases() as $alias) { $aliasesXML->appendChild($aliasXML = $dom->createElement('alias')); $aliasXML->appendChild($dom->createTextNode($alias)); } $definitionXML = $this->describeInputDefinition($command->getNativeDefinition(), array('as_dom' => true)); $this->appendDocument($commandXML, $definitionXML->getElementsByTagName('definition')->item(0)); return $this->output($dom, $options); }
/** * @param Command $command * @param InputInterface $input * @param InputDefinition $inputDefinition */ private function setInputDefinition(Command $command, InputInterface $input, InputDefinition $inputDefinition) { $command->setDefinition($inputDefinition); $command->mergeApplicationDefinition(); $input->bind($inputDefinition); }
protected function doRunCommand(Command $command, InputInterface $input, OutputInterface $output) { foreach ($command->getHelperSet() as $helper) { if ($helper instanceof InputAwareInterface) { $helper->setInput($input); } } if (null === $this->dispatcher) { return $command->run($input, $output); } try { $command->mergeApplicationDefinition(); $input->bind($command->getDefinition()); } catch (ExceptionInterface $e) { } $event = new ConsoleCommandEvent($command, $input, $output); $this->dispatcher->dispatch(ConsoleEvents::COMMAND, $event); if ($event->commandShouldRun()) { try { $exitCode = $command->run($input, $output); } catch (\Exception $e) { $event = new ConsoleExceptionEvent($command, $input, $output, $e, $e->getCode()); $this->dispatcher->dispatch(ConsoleEvents::EXCEPTION, $event); $e = $event->getException(); $event = new ConsoleTerminateEvent($command, $input, $output, $e->getCode()); $this->dispatcher->dispatch(ConsoleEvents::TERMINATE, $event); throw $e; } } else { $exitCode = ConsoleCommandEvent::RETURN_CODE_DISABLED; } $event = new ConsoleTerminateEvent($command, $input, $output, $exitCode); $this->dispatcher->dispatch(ConsoleEvents::TERMINATE, $event); return $event->getExitCode(); }