/**
  * @param \Symfony\Component\Console\Input\InputInterface $input
  * @param \Symfony\Component\Console\Output\OutputInterface $output
  * @param \Stagehand\TestRunner\DependencyInjection\Transformation\Transformation $transformation
  */
 protected function transformToConfiguration(InputInterface $input, OutputInterface $output, Transformation $transformation)
 {
     if (!is_null($input->getOption('config'))) {
         $transformation->setConfigurationFile($this->fileSystem->getAbsolutePath($input->getOption('config'), ApplicationContext::getInstance()->getEnvironment()->getWorkingDirectoryAtStartup()));
     }
     if (count($input->getArgument('test_directory_or_file')) > 0) {
         $transformation->setConfigurationPart(GeneralConfiguration::getConfigurationID(), array('test_targets' => array('resources' => $input->getArgument('test_directory_or_file'))));
     }
     if ($input->getOption('recursive')) {
         $transformation->setConfigurationPart(GeneralConfiguration::getConfigurationID(), array('test_targets' => array('recursive' => true)));
     }
     if ($this->getPlugin()->hasFeature('test_methods')) {
         if (count($input->getOption('test-method')) > 0) {
             $transformation->setConfigurationPart(GeneralConfiguration::getConfigurationID(), array('test_targets' => array('methods' => $input->getOption('test-method'))));
         }
     }
     if ($this->getPlugin()->hasFeature('test_classes')) {
         if (count($input->getOption('test-class')) > 0) {
             $transformation->setConfigurationPart(GeneralConfiguration::getConfigurationID(), array('test_targets' => array('classes' => $input->getOption('test-class'))));
         }
     }
     if (!is_null($input->getOption('test-file-pattern'))) {
         $transformation->setConfigurationPart(GeneralConfiguration::getConfigurationID(), array('test_targets' => array('file_pattern' => $input->getOption('test-file-pattern'))));
     }
     if ($this->getPlugin()->hasFeature('autotest')) {
         if ($input->getOption('autotest')) {
             $transformation->setConfigurationPart(GeneralConfiguration::getConfigurationID(), array('autotest' => array('enabled' => true)));
         }
         if (count($input->getOption('watch-dir')) > 0) {
             $transformation->setConfigurationPart(GeneralConfiguration::getConfigurationID(), array('autotest' => array('watch_dirs' => $input->getOption('watch-dir'))));
         }
     }
     if ($this->getPlugin()->hasFeature('notify')) {
         if ($input->getOption('notify')) {
             $transformation->setConfigurationPart(GeneralConfiguration::getConfigurationID(), array('notify' => true));
         }
     }
     if ($this->getPlugin()->hasFeature('junit_xml')) {
         if (!is_null($input->getOption('log-junit'))) {
             $transformation->setConfigurationPart(GeneralConfiguration::getConfigurationID(), array('junit_xml' => array('file' => $input->getOption('log-junit'))));
         }
         if ($input->getOption('log-junit-realtime')) {
             $transformation->setConfigurationPart(GeneralConfiguration::getConfigurationID(), array('junit_xml' => array('realtime' => true)));
         }
     }
     if ($this->getPlugin()->hasFeature('stop_on_failure')) {
         if ($input->getOption('stop-on-failure')) {
             $transformation->setConfigurationPart(GeneralConfiguration::getConfigurationID(), array('stop_on_failure' => true));
         }
     }
     if ($this->getPlugin()->hasFeature('detailed_progress')) {
         if ($input->getOption('detailed-progress')) {
             $transformation->setConfigurationPart(GeneralConfiguration::getConfigurationID(), array('detailed_progress' => true));
         }
     }
     $this->doTransformToConfiguration($input, $output, $transformation);
 }
 public function transformToContainerParameters()
 {
     if (!is_null($this->configurationFile)) {
         foreach (Yaml::parse($this->configurationFile) as $configurationID => $configurationPart) {
             if (!is_null($configurationPart)) {
                 if (!array_key_exists($configurationID, $this->configuration)) {
                     $this->configuration[$configurationID] = array();
                 }
                 array_unshift($this->configuration[$configurationID], $configurationPart);
             }
         }
     }
     foreach ($this->configuration as $configurationID => $configurationParts) {
         $configurations = array();
         foreach ($configurationParts as $configurationPart) {
             $configurations[] = $configurationPart;
         }
         if ($configurationID == GeneralConfiguration::getConfigurationID()) {
             $transformerID = 'General';
         } else {
             $plugin = PluginRepository::findByPluginID($configurationID);
             $transformerID = $plugin->getPluginID();
         }
         $transformerClass = __NAMESPACE__ . '\\' . $transformerID . 'Transformer';
         $transformer = new $transformerClass($configurations, $this->container);
         /* @var $transformer \Stagehand\TestRunner\DependencyInjection\Transformation\Transformer */
         $transformer->transform();
     }
     if (is_null($this->container->getParameter('test_file_pattern'))) {
         $this->container->setParameter('test_file_pattern', ApplicationContext::getInstance()->getPlugin()->getTestFilePattern());
     }
 }