/** * @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); } }