Ejemplo n.º 1
0
 /**
  * @inheritdoc
  */
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     $dir = $input->getArgument('target');
     $files = (new FileFinderBuilder($dir))->isRecursive($input->getOption('recursive'))->sortBy($input->getOption('sortBy'))->withFilters($input->getArgument('filters'))->getFinder();
     if ($files->count() === 0) {
         $output->writeln('<error>No files processed!</error>');
         return;
     }
     if ($input->getOption('listFilesOnly')) {
         $output->writeln($files->count() . ' files to process.');
         /** @var \SplFileInfo $file */
         foreach ($files as $file) {
             $output->writeln($this->formatOutputPath($file->getRealPath()));
         }
         return;
     }
     $results = new Collection();
     $messageFormatter = new MessageFormatter($this->createMessageLocatorInstance($input), false);
     /** @var \SplFileInfo $file */
     foreach ($files as $file) {
         if ($file->isFile()) {
             $result = (new AnalysisResult())->setMsgFormatter($messageFormatter);
             $req = $this->createFileAnalyserInstance($file->getPathname());
             $req->setResultInstance($result);
             $req->attachRequirementVisitors($this->createNodeWalkerInstances($input->getOption('libraryDataSource')));
             $results->add($req->run());
         }
     }
     if ($input->getOption('groupBy') === self::GROUP_BY_NAME) {
         $this->renderResultCollectionByName($results, $output, $input);
     } elseif ($input->getOption('groupBy') === self::GROUP_BY_VERSION) {
         $this->renderResultCollectionByRequiredVersion($results, $output, $input);
     } else {
         throw new \InvalidArgumentException('The value given to the groupBy option is not supported.');
     }
     if ($file = $input->getOption('saveAsFile')) {
         $this->writeToFile($file, $input->getOption('saveFormat'), $results, $output);
     }
 }