예제 #1
0
 /**
  * Adds an option at the end of the options list.
  *
  * The existing options stored in the builder are preserved.
  *
  * @param Option $option The option to add.
  *
  * @return static The current instance.
  *
  * @throws CannotAddOptionException If the option cannot be added.
  *
  * @see addOptions()
  */
 public function addOption(Option $option)
 {
     $longName = $option->getLongName();
     $shortName = $option->getShortName();
     if ($this->hasOption($longName) || $this->hasCommandOption($longName)) {
         throw CannotAddOptionException::existsAlready($longName);
     }
     if ($shortName && ($this->hasOption($shortName) || $this->hasCommandOption($shortName))) {
         throw CannotAddOptionException::existsAlready($shortName);
     }
     $this->options[$longName] = $option;
     if ($shortName) {
         $this->optionsByShortName[$shortName] = $option;
     }
     return $this;
 }
예제 #2
0
 /**
  * Renders an option.
  *
  * @param BlockLayout $layout The layout.
  * @param Option      $option The option to render.
  */
 protected function renderOption(BlockLayout $layout, Option $option)
 {
     $description = $option->getDescription();
     $defaultValue = $option->getDefaultValue();
     if ($option->isLongNamePreferred()) {
         $preferredName = '--' . $option->getLongName();
         $alternativeName = $option->getShortName() ? '-' . $option->getShortName() : null;
     } else {
         $preferredName = '-' . $option->getShortName();
         $alternativeName = '--' . $option->getLongName();
     }
     $name = '<c1>' . $preferredName . '</c1>';
     if ($alternativeName) {
         $name .= sprintf(' (%s)', $alternativeName);
     }
     if ($option->acceptsValue() && null !== $defaultValue && (!is_array($defaultValue) || count($defaultValue))) {
         $description .= sprintf(' <b>(default: %s)</b>', $this->formatValue($defaultValue));
     }
     if ($option->isMultiValued()) {
         $description .= ' <b>(multiple values allowed)</b>';
     }
     $layout->add(new LabeledParagraph($name, $description));
 }
 /**
  * Creates an input option for the given option.
  *
  * @param Option $option The option.
  *
  * @return InputOption The created input option.
  */
 private function adaptOption(Option $option)
 {
     $mode = null;
     if ($option->isMultiValued()) {
         $mode |= InputOption::VALUE_IS_ARRAY;
     }
     if ($option->isValueOptional()) {
         $mode |= InputOption::VALUE_OPTIONAL;
     }
     if ($option->isValueRequired()) {
         $mode |= InputOption::VALUE_REQUIRED;
     }
     return new InputOption($option->getLongName(), $option->getShortName(), $mode, $option->getDescription(), $option->getDefaultValue());
 }
예제 #4
0
 public function testDashedShortName()
 {
     $option = new Option('option', '-o');
     $this->assertSame('o', $option->getShortName());
 }