/** * 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; }
/** * 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()); }
public function testDashedShortName() { $option = new Option('option', '-o'); $this->assertSame('o', $option->getShortName()); }