class DrushInputAdapter

Adapter for Symfony Console InputInterface

This class can serve as a stand-in wherever an InputInterface is needed. It calls through to ordinary Drush procedural functions. This object should not be used directly; it exists only in the Drush 8.x branch.

We use this class rather than using an ArrayInput for two reasons: 1) We do not want to convert our options array back to '--option=value' or '--option value' just to have them re-parsed again. 2) We do not want Symfony to attempt to validate our options or arguments for us.

Namespace

Drush\Command

Hierarchy

Expanded class hierarchy of DrushInputAdapter

Members

Contains filters are case sensitive

File

lib/Drush/Command/DrushInputAdapter.php, line 27
Definition of Drush\Command\DrushInputAdapter.

View source
class DrushInputAdapter implements InputInterface {
  protected $arguments;
  protected $options;
  protected $interactive;

  public function __construct($arguments, $options, $command = false, $interactive = true) {
    $this->arguments = $arguments;
    $this->options = $options;

    // If a command name is provided as a parameter, then push
    // it onto the front of the arguments list as a service
    if ($command) {
      $this->arguments = array_merge(['command' $command], $this->arguments);
    }
    // Is it interactive, or is it not interactive?
    // Call drush_get_option() here if value not passed in?
    $this->interactive = $interactive;
  }

  /**
   *  {@inheritdoc}
   */
  public function getFirstArgument() {
    return reset($arguments);
  }

  /**
   * {@inheritdoc}
   */
  public function hasParameterOption($values) {
    $values = (array) $values;

    foreach ($values as $value) {
      if (array_key_exists($value, $this->options)) {
        return true;
      }
    }

    return false;
  }

  /**
   *  {@inheritdoc}
   */
  public function getParameterOption($values, $default = false) {
    $values = (array) $values;

    foreach ($values as $value) {
      if (array_key_exists($value, $this->options)) {
        return $this->getOption($value);
      }
    }

    return $default;
  }

  /**
   *  {@inheritdoc}
   */
  public function bind(InputDefinition $definition) {
    // no-op: this class exists to avoid validation
  }

  /**
   *  {@inheritdoc}
   */
  public function validate() {
    // no-op: this class exists to avoid validation
  }

  /**
   *  {@inheritdoc}
   */
  public function getArguments() {
    return $this->arguments;
  }

  /**
   *  {@inheritdoc}
   */
  public function getArgument($name) {
    // TODO: better to throw if an argument that does not exist is requested?
    return isset($this->arguments[$name]) ? $this->arguments[$name] : '';
  }

  /**
   *  {@inheritdoc}
   */
  public function setArgument($name, $value) {
    $this->arguments[$name] = $value;
  }

  /**
   *  {@inheritdoc}
   */
  public function hasArgument($name) {
    return isset($this->arguments[$name]);
  }

  /**
   *  {@inheritdoc}
   */
  public function getOptions() {
    return $this->options;
  }

  /**
   *  {@inheritdoc}
   */
  public function getOption($name) {
    return $this->options[$name];
  }

  /**
   *  {@inheritdoc}
   */
  public function setOption($name, $value) {
    $this->options[$name] = $value;
  }

  /**
   *  {@inheritdoc}
   */
  public function hasOption($name) {
    return isset($this->options[$name]);
  }

  /**
   *  {@inheritdoc}
   */
  public function isInteractive() {
    return $this->interactive;
  }

  /**
   *  {@inheritdoc}
   */
  public function setInteractive($interactive) {
    $this->interactive = $interactive;
  }
}
2 files declare their use of DrushInputAdapter