/**
  * Run console.
  *
  * @param AbstractInput $input
  */
 public function run(AbstractInput $input)
 {
     $this->output = $this->output ?: new Output();
     $input->bind($this->definition);
     if (true === $input->option->get('no-ansi')) {
         $this->output->setEnableAnsi(false);
     }
     if (true === $input->option->get('help')) {
         $this->application->writeHelp($this, $input->option->all());
     } else {
         $input->validate();
         $args = func_get_args();
         array_shift($args);
         call_user_func_array(array($this, 'execute'), array_merge(array($input, $this->output), $args));
     }
 }