/**
  * @param string          $command
  * @param array           $args
  * @param OutputInterface $output
  *
  * @return CreateArchiveCommand
  *
  * @throws \RuntimeException
  */
 public function runCommand($command, array $args, OutputInterface $output)
 {
     $input = new ArrayInput(array_merge($args, array('command' => $command)));
     $command = $this->getApplication()->find($command);
     $output->writeln(sprintf("Starting command: <info>%s</info>", $input->__toString()));
     $exception = $success = false;
     try {
         $success = $command->run($input, $output) === 0;
     } catch (\Exception $e) {
         $success = false;
         $exception = $e;
     }
     if (!$success) {
         $this->getApplication()->sendReport(Message::create($this->project, file_get_contents($this->log), 'ERROR'));
     }
     if (!$success) {
         throw new SuccessException(sprintf('<error>The command %s failed</error>', $command->getName()));
     }
     if ($exception) {
         throw $exception;
     }
     $output->writeln("end command");
     return $this;
 }