/**
* Run the Peridot application
*
* @param InputInterface $input
* @param OutputInterface $output
* @return int
*/
public function doRun(InputInterface $input, OutputInterface $output)
{
$this->configuration = ConfigurationReader::readInput($input);
$this->environment->getEventEmitter()->emit('peridot.configure', [$this->configuration, $this]);
$runner = $this->getRunner();
$factory = new ReporterFactory($this->configuration, $output, $this->environment->getEventEmitter());
$this->loadDsl($this->configuration->getDsl());
$this->add(new Command($runner, $this->configuration, $factory, $this->environment->getEventEmitter()));
$exitCode = parent::doRun($input, $output);
$this->environment->getEventEmitter()->emit('peridot.end', [$exitCode, $input, $output]);
return $exitCode;
}