rector/src/DependencyInjection/RectorContainerFactory.php
Tomas Votruba e1b8b2e468 Updated Rector to commit 81ba0c90bd
81ba0c90bd [Scoper] Remove PHPStanStubLoader: move to dedicated file to define native classes (#2249)
2022-05-07 09:29:04 +00:00

46 lines
2.2 KiB
PHP

<?php
declare (strict_types=1);
namespace Rector\Core\DependencyInjection;
use RectorPrefix20220507\Nette\Utils\FileSystem;
use RectorPrefix20220507\Psr\Container\ContainerInterface;
use Rector\Caching\Detector\ChangedFilesDetector;
use Rector\Core\Kernel\RectorKernel;
use Rector\Core\ValueObject\Bootstrap\BootstrapConfigs;
use RectorPrefix20220507\Symfony\Component\Console\Style\SymfonyStyle;
final class RectorContainerFactory
{
public function createFromBootstrapConfigs(\Rector\Core\ValueObject\Bootstrap\BootstrapConfigs $bootstrapConfigs) : \RectorPrefix20220507\Psr\Container\ContainerInterface
{
$container = $this->createFromConfigs($bootstrapConfigs->getConfigFiles());
$mainConfigFile = $bootstrapConfigs->getMainConfigFile();
if ($mainConfigFile !== null) {
// warning about old syntax before RectorConfig
$fileContents = \RectorPrefix20220507\Nette\Utils\FileSystem::read($mainConfigFile);
if (\strpos($fileContents, 'ContainerConfigurator $containerConfigurator') !== \false) {
/** @var SymfonyStyle $symfonyStyle */
$symfonyStyle = $container->get(\RectorPrefix20220507\Symfony\Component\Console\Style\SymfonyStyle::class);
// @todo add link to blog post after release
$warningMessage = \sprintf('Your "%s" config is using old syntax with "ContainerConfigurator".%sPlease upgrade to "RectorConfig" that allows better autocomplete and future standard.', $mainConfigFile, \PHP_EOL);
$symfonyStyle->warning($warningMessage);
// to make message noticable
\sleep(1);
}
/** @var ChangedFilesDetector $changedFilesDetector */
$changedFilesDetector = $container->get(\Rector\Caching\Detector\ChangedFilesDetector::class);
$changedFilesDetector->setFirstResolvedConfigFileInfo($mainConfigFile);
}
return $container;
}
/**
* @param string[] $configFiles
* @api
*/
private function createFromConfigs(array $configFiles) : \RectorPrefix20220507\Psr\Container\ContainerInterface
{
$rectorKernel = new \Rector\Core\Kernel\RectorKernel();
return $rectorKernel->createFromConfigs($configFiles);
}
}