%PDF- %PDF-
Direktori : /home/vacivi36/vacivitta.com.br/vendor/rector/rector/src/Console/Command/ |
Current File : /home/vacivi36/vacivitta.com.br/vendor/rector/rector/src/Console/Command/ProcessCommand.php |
<?php declare (strict_types=1); namespace Rector\Core\Console\Command; use Rector\Caching\Detector\ChangedFilesDetector; use Rector\ChangesReporting\Output\JsonOutputFormatter; use Rector\Core\Application\ApplicationFileProcessor; use Rector\Core\Autoloading\AdditionalAutoloader; use Rector\Core\Autoloading\BootstrapFilesIncluder; use Rector\Core\Configuration\Option; use Rector\Core\Console\Output\OutputFormatterCollector; use Rector\Core\Contract\Rector\RectorInterface; use Rector\Core\Exception\ShouldNotHappenException; use Rector\Core\Reporting\MissingRectorRulesReporter; use Rector\Core\StaticReflection\DynamicSourceLocatorDecorator; use Rector\Core\Validation\EmptyConfigurableRectorChecker; use Rector\Core\ValueObject\Configuration; use Rector\Core\ValueObject\ProcessResult; use Rector\Core\ValueObjectFactory\ProcessResultFactory; use Rector\VersionBonding\Application\MissedRectorDueVersionChecker; use RectorPrefix20211231\Symfony\Component\Console\Application; use RectorPrefix20211231\Symfony\Component\Console\Command\Command; use RectorPrefix20211231\Symfony\Component\Console\Input\InputInterface; use RectorPrefix20211231\Symfony\Component\Console\Output\OutputInterface; use RectorPrefix20211231\Symfony\Component\Console\Style\SymfonyStyle; use RectorPrefix20211231\Symplify\PackageBuilder\Console\Command\CommandNaming; final class ProcessCommand extends \Rector\Core\Console\Command\AbstractProcessCommand { /** * @readonly * @var \Rector\Core\Autoloading\AdditionalAutoloader */ private $additionalAutoloader; /** * @readonly * @var \Rector\Caching\Detector\ChangedFilesDetector */ private $changedFilesDetector; /** * @readonly * @var \Rector\Core\Reporting\MissingRectorRulesReporter */ private $missingRectorRulesReporter; /** * @readonly * @var \Rector\Core\Application\ApplicationFileProcessor */ private $applicationFileProcessor; /** * @readonly * @var \Rector\Core\Autoloading\BootstrapFilesIncluder */ private $bootstrapFilesIncluder; /** * @readonly * @var \Rector\Core\ValueObjectFactory\ProcessResultFactory */ private $processResultFactory; /** * @readonly * @var \Rector\Core\StaticReflection\DynamicSourceLocatorDecorator */ private $dynamicSourceLocatorDecorator; /** * @readonly * @var \Rector\VersionBonding\Application\MissedRectorDueVersionChecker */ private $missedRectorDueVersionChecker; /** * @readonly * @var \Rector\Core\Validation\EmptyConfigurableRectorChecker */ private $emptyConfigurableRectorChecker; /** * @readonly * @var \Rector\Core\Console\Output\OutputFormatterCollector */ private $outputFormatterCollector; /** * @readonly * @var \Symfony\Component\Console\Style\SymfonyStyle */ private $symfonyStyle; /** * @var RectorInterface[] * @readonly */ private $rectors; /** * @param RectorInterface[] $rectors */ public function __construct(\Rector\Core\Autoloading\AdditionalAutoloader $additionalAutoloader, \Rector\Caching\Detector\ChangedFilesDetector $changedFilesDetector, \Rector\Core\Reporting\MissingRectorRulesReporter $missingRectorRulesReporter, \Rector\Core\Application\ApplicationFileProcessor $applicationFileProcessor, \Rector\Core\Autoloading\BootstrapFilesIncluder $bootstrapFilesIncluder, \Rector\Core\ValueObjectFactory\ProcessResultFactory $processResultFactory, \Rector\Core\StaticReflection\DynamicSourceLocatorDecorator $dynamicSourceLocatorDecorator, \Rector\VersionBonding\Application\MissedRectorDueVersionChecker $missedRectorDueVersionChecker, \Rector\Core\Validation\EmptyConfigurableRectorChecker $emptyConfigurableRectorChecker, \Rector\Core\Console\Output\OutputFormatterCollector $outputFormatterCollector, \RectorPrefix20211231\Symfony\Component\Console\Style\SymfonyStyle $symfonyStyle, array $rectors) { $this->additionalAutoloader = $additionalAutoloader; $this->changedFilesDetector = $changedFilesDetector; $this->missingRectorRulesReporter = $missingRectorRulesReporter; $this->applicationFileProcessor = $applicationFileProcessor; $this->bootstrapFilesIncluder = $bootstrapFilesIncluder; $this->processResultFactory = $processResultFactory; $this->dynamicSourceLocatorDecorator = $dynamicSourceLocatorDecorator; $this->missedRectorDueVersionChecker = $missedRectorDueVersionChecker; $this->emptyConfigurableRectorChecker = $emptyConfigurableRectorChecker; $this->outputFormatterCollector = $outputFormatterCollector; $this->symfonyStyle = $symfonyStyle; $this->rectors = $rectors; parent::__construct(); } protected function configure() : void { $this->setName(\RectorPrefix20211231\Symplify\PackageBuilder\Console\Command\CommandNaming::classToName(self::class)); $this->setDescription('Upgrades or refactors source code with provided rectors'); parent::configure(); } protected function execute(\RectorPrefix20211231\Symfony\Component\Console\Input\InputInterface $input, \RectorPrefix20211231\Symfony\Component\Console\Output\OutputInterface $output) : int { $exitCode = $this->missingRectorRulesReporter->reportIfMissing(); if ($exitCode !== null) { return $exitCode; } $configuration = $this->configurationFactory->createFromInput($input); // disable console output in case of json output formatter if ($configuration->getOutputFormat() === \Rector\ChangesReporting\Output\JsonOutputFormatter::NAME) { $this->symfonyStyle->setVerbosity(\RectorPrefix20211231\Symfony\Component\Console\Output\OutputInterface::VERBOSITY_QUIET); } // register autoloaded and included files $this->bootstrapFilesIncluder->includeBootstrapFiles(); $this->additionalAutoloader->autoloadInput($input); $this->additionalAutoloader->autoloadPaths(); $paths = $configuration->getPaths(); // 0. add files and directories to static locator $this->dynamicSourceLocatorDecorator->addPaths($paths); // 1. inform user about non-runnable rules $this->missedRectorDueVersionChecker->check($this->rectors); // 2. inform user about registering configurable rule without configuration $this->emptyConfigurableRectorChecker->check(); // MAIN PHASE // 3. run Rector $systemErrorsAndFileDiffs = $this->applicationFileProcessor->run($configuration, $input); // REPORTING PHASE // 4. reporting phase // report diffs and errors $outputFormat = $configuration->getOutputFormat(); $outputFormatter = $this->outputFormatterCollector->getByName($outputFormat); $processResult = $this->processResultFactory->create($systemErrorsAndFileDiffs); $outputFormatter->report($processResult, $configuration); // invalidate affected files $this->invalidateCacheChangedFiles($processResult); return $this->resolveReturnCode($processResult, $configuration); } protected function initialize(\RectorPrefix20211231\Symfony\Component\Console\Input\InputInterface $input, \RectorPrefix20211231\Symfony\Component\Console\Output\OutputInterface $output) : void { $application = $this->getApplication(); if (!$application instanceof \RectorPrefix20211231\Symfony\Component\Console\Application) { throw new \Rector\Core\Exception\ShouldNotHappenException(); } $optionDebug = (bool) $input->getOption(\Rector\Core\Configuration\Option::DEBUG); if ($optionDebug) { $application->setCatchExceptions(\false); } // clear cache $optionClearCache = (bool) $input->getOption(\Rector\Core\Configuration\Option::CLEAR_CACHE); if ($optionDebug || $optionClearCache) { $this->changedFilesDetector->clear(); } } private function invalidateCacheChangedFiles(\Rector\Core\ValueObject\ProcessResult $processResult) : void { foreach ($processResult->getChangedFileInfos() as $changedFileInfo) { $this->changedFilesDetector->invalidateFile($changedFileInfo); } } private function resolveReturnCode(\Rector\Core\ValueObject\ProcessResult $processResult, \Rector\Core\ValueObject\Configuration $configuration) : int { // some system errors were found → fail if ($processResult->getErrors() !== []) { return \RectorPrefix20211231\Symfony\Component\Console\Command\Command::FAILURE; } // inverse error code for CI dry-run if (!$configuration->isDryRun()) { return \RectorPrefix20211231\Symfony\Component\Console\Command\Command::SUCCESS; } return $processResult->getFileDiffs() === [] ? \RectorPrefix20211231\Symfony\Component\Console\Command\Command::SUCCESS : \RectorPrefix20211231\Symfony\Component\Console\Command\Command::FAILURE; } }