![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/cartforge.co/vendor/rector/rector/src/Console/Command/ |
<?php declare (strict_types=1); namespace Rector\Console\Command; use RectorPrefix202410\Nette\Utils\Json; use Rector\ChangesReporting\Output\ConsoleOutputFormatter; use Rector\Configuration\Option; use Rector\Contract\Rector\RectorInterface; use Rector\PostRector\Contract\Rector\PostRectorInterface; use Rector\Skipper\SkipCriteriaResolver\SkippedClassResolver; use RectorPrefix202410\Symfony\Component\Console\Command\Command; use RectorPrefix202410\Symfony\Component\Console\Input\InputInterface; use RectorPrefix202410\Symfony\Component\Console\Input\InputOption; use RectorPrefix202410\Symfony\Component\Console\Output\OutputInterface; use RectorPrefix202410\Symfony\Component\Console\Style\SymfonyStyle; final class ListRulesCommand extends Command { /** * @readonly * @var \Symfony\Component\Console\Style\SymfonyStyle */ private $symfonyStyle; /** * @readonly * @var \Rector\Skipper\SkipCriteriaResolver\SkippedClassResolver */ private $skippedClassResolver; /** * @var RectorInterface[] * @readonly */ private $rectors; /** * @param RectorInterface[] $rectors */ public function __construct(SymfonyStyle $symfonyStyle, SkippedClassResolver $skippedClassResolver, array $rectors) { $this->symfonyStyle = $symfonyStyle; $this->skippedClassResolver = $skippedClassResolver; $this->rectors = $rectors; parent::__construct(); } protected function configure() : void { $this->setName('list-rules'); $this->setDescription('Show loaded Rectors'); $this->setAliases(['show-rules']); $this->addOption(Option::OUTPUT_FORMAT, null, InputOption::VALUE_REQUIRED, 'Select output format', ConsoleOutputFormatter::NAME); } protected function execute(InputInterface $input, OutputInterface $output) : int { $rectorClasses = $this->resolveRectorClasses(); $skippedClasses = $this->getSkippedCheckers(); $outputFormat = $input->getOption(Option::OUTPUT_FORMAT); if ($outputFormat === 'json') { $data = ['rectors' => $rectorClasses, 'skipped-rectors' => $skippedClasses]; echo Json::encode($data, \true) . \PHP_EOL; return Command::SUCCESS; } $this->symfonyStyle->title('Loaded Rector rules'); $this->symfonyStyle->listing($rectorClasses); if ($skippedClasses !== []) { $this->symfonyStyle->title('Skipped Rector rules'); $this->symfonyStyle->listing($skippedClasses); } $this->symfonyStyle->newLine(); $this->symfonyStyle->note(\sprintf('Loaded %d rules', \count($rectorClasses))); return Command::SUCCESS; } /** * @return array<class-string<RectorInterface>> */ private function resolveRectorClasses() : array { $customRectors = \array_filter($this->rectors, static function (RectorInterface $rector) : bool { return !$rector instanceof PostRectorInterface; }); $rectorClasses = \array_map(static function (RectorInterface $rector) : string { return \get_class($rector); }, $customRectors); \sort($rectorClasses); return \array_unique($rectorClasses); } /** * @return string[] */ private function getSkippedCheckers() : array { $skippedCheckers = []; foreach ($this->skippedClassResolver->resolve() as $checkerClass => $fileList) { // ignore specific skips if ($fileList !== null) { continue; } $skippedCheckers[] = $checkerClass; } return $skippedCheckers; } }