Example #1
0
 /**
  * {@inheritDoc}
  *
  * @SuppressWarnings(PHPMD.CyclomaticComplexity)
  * @SuppressWarnings(PHPMD.NPathComplexity)
  */
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     $error = $output instanceof ConsoleOutputInterface ? $output->getErrorOutput() : $output;
     if (!($input->getOption('php-files') || $input->getOption('composer') || $input->getOption('bower') || $input->getOption('packages'))) {
         $error->writeln('<error>You must select at least one validation to run!</error>');
         $error->writeln('check-author.php [--php-files] [--composer] [--bower] [--packages]');
         return 1;
     }
     $config = new Config();
     if (!$input->getOption('do-not-ignore-well-known-bots')) {
         $configFile = dirname(dirname(__DIR__)) . DIRECTORY_SEPARATOR . 'defaults' . DIRECTORY_SEPARATOR . 'ignore-well-known-bots.yml';
         $config->addFromYml($configFile);
     }
     $configFile = $input->getOption('config');
     if (is_file($configFile)) {
         $config->addFromYml($configFile);
     }
     $config->ignoreAuthors($input->getOption('ignore'))->excludePaths($input->getOption('exclude'))->includePaths(array_filter(array_map(function ($arg) {
         return realpath($arg);
     }, $input->getArgument('include'))));
     $diff = $input->getOption('diff');
     $extractors = $this->createSourceExtractors($input, $error, $config);
     $gitExtractor = new GitAuthorExtractor($config, $error);
     $comparator = new AuthorListComparator($config, $error);
     $comparator->shallGeneratePatches($diff);
     $failed = $this->handleExtractors($extractors, $gitExtractor, $comparator);
     if ($failed && $diff) {
         $output->writeln($comparator->getPatchSet());
     }
     return $failed ? 1 : 0;
 }