diff --git a/config/config.php b/config/config.php index 306746dc7c36..53a101309aa1 100644 --- a/config/config.php +++ b/config/config.php @@ -3,13 +3,49 @@ declare (strict_types=1); namespace RectorPrefix20220527; +use RectorPrefix20220527\OndraM\CiDetector\CiDetector; +use Rector\Caching\ValueObject\Storage\MemoryCacheStorage; use Rector\Config\RectorConfig; use Rector\Core\Bootstrap\ExtensionConfigResolver; +use RectorPrefix20220527\Symplify\EasyParallel\ValueObject\EasyParallelConfig; +use RectorPrefix20220527\Symplify\PackageBuilder\Yaml\ParametersMerger; return static function (\Rector\Config\RectorConfig $rectorConfig) : void { $rectorConfig->import(__DIR__ . '/services.php'); $rectorConfig->import(__DIR__ . '/services-rules.php'); - $rectorConfig->import(__DIR__ . '/services-packages.php'); - $rectorConfig->import(__DIR__ . '/parameters.php'); + // make use of https://github.com/symplify/easy-parallel + $rectorConfig->import(\RectorPrefix20220527\Symplify\EasyParallel\ValueObject\EasyParallelConfig::FILE_PATH); + $rectorConfig->paths([]); + $rectorConfig->skip([]); + $rectorConfig->autoloadPaths([]); + $rectorConfig->bootstrapFiles([]); + $rectorConfig->parallel(120, 16, 20); + $rectorConfig->disableImportNames(); + $rectorConfig->importShortClasses(); + $rectorConfig->fileExtensions(['php']); + $rectorConfig->nestedChainMethodCallLimit(60); + $rectorConfig->cacheDirectory(\sys_get_temp_dir() . '/rector_cached_files'); + $services = $rectorConfig->services(); + $services->defaults()->public()->autowire()->autoconfigure(); + $services->load('Rector\\', __DIR__ . '/../packages')->exclude([ + __DIR__ . '/../packages/Config/RectorConfig.php', + __DIR__ . '/../packages/*/{ValueObject,Contract,Exception}', + __DIR__ . '/../packages/BetterPhpDocParser/PhpDocInfo/PhpDocInfo.php', + __DIR__ . '/../packages/Testing/PHPUnit', + __DIR__ . '/../packages/BetterPhpDocParser/PhpDoc', + __DIR__ . '/../packages/PHPStanStaticTypeMapper/Enum', + __DIR__ . '/../packages/Caching/Cache.php', + // used in PHPStan + __DIR__ . '/../packages/NodeTypeResolver/Reflection/BetterReflection/RectorBetterReflectionSourceLocatorFactory.php', + __DIR__ . '/../packages/NodeTypeResolver/Reflection/BetterReflection/SourceLocatorProvider/DynamicSourceLocatorProvider.php', + ]); + // parallel + $services->set(\RectorPrefix20220527\Symplify\PackageBuilder\Yaml\ParametersMerger::class); + // use faster in-memory cache in CI. + // CI always starts from scratch, therefore IO intensive caching is not worth it + $ciDetector = new \RectorPrefix20220527\OndraM\CiDetector\CiDetector(); + if ($ciDetector->isCiDetected()) { + $rectorConfig->cacheClass(\Rector\Caching\ValueObject\Storage\MemoryCacheStorage::class); + } $extensionConfigResolver = new \Rector\Core\Bootstrap\ExtensionConfigResolver(); $extensionConfigFiles = $extensionConfigResolver->provide(); foreach ($extensionConfigFiles as $extensionConfigFile) { diff --git a/config/parameters.php b/config/parameters.php deleted file mode 100644 index df6802073070..000000000000 --- a/config/parameters.php +++ /dev/null @@ -1,37 +0,0 @@ -paths([]); - $parameters = $rectorConfig->parameters(); - $parameters->set(\Rector\Core\Configuration\Option::FILE_EXTENSIONS, ['php']); - $rectorConfig->autoloadPaths([]); - // these files will be executed, useful e.g. for constant definitions - $rectorConfig->bootstrapFiles([]); - // parallel - $rectorConfig->disableParallel(); - $parameters->set(\Rector\Core\Configuration\Option::PARALLEL_MAX_NUMBER_OF_PROCESSES, 16); - $parameters->set(\Rector\Core\Configuration\Option::PARALLEL_JOB_SIZE, 20); - $parameters->set(\Rector\Core\Configuration\Option::PARALLEL_TIMEOUT_IN_SECONDS, 120); - // FQN class importing - $rectorConfig->disableImportNames(); - $rectorConfig->importShortClasses(); - $parameters->set(\Rector\Core\Configuration\Option::NESTED_CHAIN_METHOD_CALL_LIMIT, 60); - $rectorConfig->skip([]); - $parameters->set(\Rector\Core\Configuration\Option::PHPSTAN_FOR_RECTOR_PATH, null); - // cache - $parameters->set(\Rector\Core\Configuration\Option::CACHE_DIR, \sys_get_temp_dir() . '/rector_cached_files'); - // use faster in-memory cache in CI. - // CI always starts from scratch, therefore IO intensive caching is not worth it - $ciDetector = new \RectorPrefix20220527\OndraM\CiDetector\CiDetector(); - if ($ciDetector->isCiDetected()) { - $parameters->set(\Rector\Core\Configuration\Option::CACHE_CLASS, \Rector\Caching\ValueObject\Storage\MemoryCacheStorage::class); - } -}; diff --git a/config/services-packages.php b/config/services-packages.php deleted file mode 100644 index b79bb706d0be..000000000000 --- a/config/services-packages.php +++ /dev/null @@ -1,28 +0,0 @@ -import(\RectorPrefix20220527\Symplify\EasyParallel\ValueObject\EasyParallelConfig::FILE_PATH); - $services = $rectorConfig->services(); - $services->defaults()->public()->autowire()->autoconfigure(); - $services->load('Rector\\', __DIR__ . '/../packages')->exclude([ - __DIR__ . '/../packages/Config/RectorConfig.php', - __DIR__ . '/../packages/*/{ValueObject,Contract,Exception}', - __DIR__ . '/../packages/BetterPhpDocParser/PhpDocInfo/PhpDocInfo.php', - __DIR__ . '/../packages/Testing/PHPUnit', - __DIR__ . '/../packages/BetterPhpDocParser/PhpDoc', - __DIR__ . '/../packages/PHPStanStaticTypeMapper/Enum', - __DIR__ . '/../packages/Caching/Cache.php', - // used in PHPStan - __DIR__ . '/../packages/NodeTypeResolver/Reflection/BetterReflection/RectorBetterReflectionSourceLocatorFactory.php', - __DIR__ . '/../packages/NodeTypeResolver/Reflection/BetterReflection/SourceLocatorProvider/DynamicSourceLocatorProvider.php', - ]); - // parallel - $services->set(\RectorPrefix20220527\Symplify\PackageBuilder\Yaml\ParametersMerger::class); -}; diff --git a/packages/Config/RectorConfig.php b/packages/Config/RectorConfig.php index af3b60164a86..8979b4d59d14 100644 --- a/packages/Config/RectorConfig.php +++ b/packages/Config/RectorConfig.php @@ -3,6 +3,7 @@ declare (strict_types=1); namespace Rector\Config; +use Rector\Caching\Contract\ValueObject\Storage\CacheStorageInterface; use Rector\Core\Configuration\Option; use Rector\Core\Configuration\ValueObjectInliner; use Rector\Core\Contract\Rector\ConfigurableRectorInterface; @@ -161,4 +162,32 @@ public function symfonyContainerPhp(string $filePath) : void $parameters = $this->parameters(); $parameters->set(\Rector\Core\Configuration\Option::SYMFONY_CONTAINER_PHP_PATH_PARAMETER, $filePath); } + /** + * @param string[] $extensions + */ + public function fileExtensions(array $extensions) : void + { + \RectorPrefix20220527\Webmozart\Assert\Assert::allString($extensions); + $parameters = $this->parameters(); + $parameters->set(\Rector\Core\Configuration\Option::FILE_EXTENSIONS, $extensions); + } + public function nestedChainMethodCallLimit(int $limit) : void + { + $parameters = $this->parameters(); + $parameters->set(\Rector\Core\Configuration\Option::NESTED_CHAIN_METHOD_CALL_LIMIT, $limit); + } + public function cacheDirectory(string $directoryPath) : void + { + $parameters = $this->parameters(); + $parameters->set(\Rector\Core\Configuration\Option::CACHE_DIR, $directoryPath); + } + /** + * @param class-string $cacheClass + */ + public function cacheClass(string $cacheClass) : void + { + \RectorPrefix20220527\Webmozart\Assert\Assert::isAOf($cacheClass, \Rector\Caching\Contract\ValueObject\Storage\CacheStorageInterface::class); + $parameters = $this->parameters(); + $parameters->set(\Rector\Core\Configuration\Option::CACHE_CLASS, $cacheClass); + } } diff --git a/packages/NodeTypeResolver/DependencyInjection/PHPStanServicesFactory.php b/packages/NodeTypeResolver/DependencyInjection/PHPStanServicesFactory.php index ecf330aea3f4..d2bbace408de 100644 --- a/packages/NodeTypeResolver/DependencyInjection/PHPStanServicesFactory.php +++ b/packages/NodeTypeResolver/DependencyInjection/PHPStanServicesFactory.php @@ -33,7 +33,9 @@ public function __construct(\RectorPrefix20220527\Symplify\PackageBuilder\Parame { $containerFactory = new \PHPStan\DependencyInjection\ContainerFactory(\getcwd()); $additionalConfigFiles = []; - $additionalConfigFiles[] = $parameterProvider->provideStringParameter(\Rector\Core\Configuration\Option::PHPSTAN_FOR_RECTOR_PATH); + if ($parameterProvider->hasParameter(\Rector\Core\Configuration\Option::PHPSTAN_FOR_RECTOR_PATH)) { + $additionalConfigFiles[] = $parameterProvider->provideStringParameter(\Rector\Core\Configuration\Option::PHPSTAN_FOR_RECTOR_PATH); + } $additionalConfigFiles[] = __DIR__ . '/../../../config/phpstan/static-reflection.neon'; $additionalConfigFiles[] = __DIR__ . '/../../../config/phpstan/better-infer.neon'; $additionalConfigFiles[] = __DIR__ . '/../../../config/phpstan/parser.neon'; diff --git a/rules/DogFood/Rector/Closure/UpgradeRectorConfigRector.php b/rules/DogFood/Rector/Closure/UpgradeRectorConfigRector.php index f38ae89220c3..f42ff67f3bfe 100644 --- a/rules/DogFood/Rector/Closure/UpgradeRectorConfigRector.php +++ b/rules/DogFood/Rector/Closure/UpgradeRectorConfigRector.php @@ -29,7 +29,7 @@ final class UpgradeRectorConfigRector extends \Rector\Core\Rector\AbstractRector /** * @var array */ - private const PARAMETER_NAME_TO_METHOD_CALL_MAP = [\Rector\Core\Configuration\Option::PATHS => 'paths', \Rector\Core\Configuration\Option::SKIP => 'skip', \Rector\Core\Configuration\Option::AUTOLOAD_PATHS => 'autoloadPaths', \Rector\Core\Configuration\Option::BOOTSTRAP_FILES => 'bootstrapFiles', \Rector\Core\Configuration\Option::IMPORT_SHORT_CLASSES => 'importShortClasses', \Rector\Core\Configuration\Option::AUTO_IMPORT_NAMES => 'importNames', \Rector\Core\Configuration\Option::PARALLEL => 'parallel', \Rector\Core\Configuration\Option::PHPSTAN_FOR_RECTOR_PATH => 'phpstanConfig', \Rector\Core\Configuration\Option::PHP_VERSION_FEATURES => 'phpVersion']; + private const PARAMETER_NAME_TO_METHOD_CALL_MAP = [\Rector\Core\Configuration\Option::PATHS => 'paths', \Rector\Core\Configuration\Option::SKIP => 'skip', \Rector\Core\Configuration\Option::AUTOLOAD_PATHS => 'autoloadPaths', \Rector\Core\Configuration\Option::BOOTSTRAP_FILES => 'bootstrapFiles', \Rector\Core\Configuration\Option::IMPORT_SHORT_CLASSES => 'importShortClasses', \Rector\Core\Configuration\Option::AUTO_IMPORT_NAMES => 'importNames', \Rector\Core\Configuration\Option::PARALLEL => 'parallel', \Rector\Core\Configuration\Option::PHPSTAN_FOR_RECTOR_PATH => 'phpstanConfig', \Rector\Core\Configuration\Option::PHP_VERSION_FEATURES => 'phpVersion', \Rector\Core\Configuration\Option::CACHE_CLASS => 'cacheClass', \Rector\Core\Configuration\Option::CACHE_DIR => 'cacheDirectory', \Rector\Core\Configuration\Option::NESTED_CHAIN_METHOD_CALL_LIMIT => 'nestedChainMethodCallLimit', \Rector\Core\Configuration\Option::FILE_EXTENSIONS => 'fileExtensions', \Rector\Core\Configuration\Option::SYMFONY_CONTAINER_PHP_PATH_PARAMETER => 'symfonyContainerPhp', \Rector\Core\Configuration\Option::SYMFONY_CONTAINER_XML_PATH_PARAMETER => 'symfonyContainerXml']; /** * @var string */ diff --git a/src/Application/VersionResolver.php b/src/Application/VersionResolver.php index c2af45761c01..a985d5c5f1f5 100644 --- a/src/Application/VersionResolver.php +++ b/src/Application/VersionResolver.php @@ -16,11 +16,11 @@ final class VersionResolver /** * @var string */ - public const PACKAGE_VERSION = 'a2d6da8b4e5f3058dd95b4db2d173682b250896e'; + public const PACKAGE_VERSION = '45eef47f27df7b6ed3422c19db03e0e74fe0417b'; /** * @var string */ - public const RELEASE_DATE = '2022-05-27 11:45:03'; + public const RELEASE_DATE = '2022-05-27 15:30:05'; /** * @var string */ diff --git a/src/Configuration/Option.php b/src/Configuration/Option.php index 0fcf52ff3d90..aa851992511e 100644 --- a/src/Configuration/Option.php +++ b/src/Configuration/Option.php @@ -60,7 +60,7 @@ final class Option */ public const SYMFONY_CONTAINER_XML_PATH_PARAMETER = 'symfony_container_xml_path'; /** - * @internal Use @see \Rector\Config\RectorConfig::symfonyContainerPhp() + * @deprecated Use @see \Rector\Config\RectorConfig::symfonyContainerPhp() * @var string */ public const SYMFONY_CONTAINER_PHP_PATH_PARAMETER = 'symfony_container_php_path'; @@ -93,19 +93,23 @@ final class Option */ public const SKIP = \RectorPrefix20220527\Symplify\Skipper\ValueObject\Option::SKIP; /** + * @deprecated Use RectorConfig::fileExtensions() instead * @var string */ public const FILE_EXTENSIONS = 'file_extensions'; /** + * @deprecated Use RectorConfig::nestedChainMethodCallLimit() instead * @var string */ public const NESTED_CHAIN_METHOD_CALL_LIMIT = 'nested_chain_method_call_limit'; /** + * @deprecated Use RectorConfig::cacheDirectory() instead * @var string */ public const CACHE_DIR = 'cache_dir'; /** * Cache backend. Most of the time we cache in files, but in ephemeral environment (e.g. CI), a faster `MemoryCacheStorage` can be usefull. + * @deprecated Use RectorConfig::cacheClass() instead * * @var class-string * @internal diff --git a/vendor/autoload.php b/vendor/autoload.php index 8a827d2f0dd6..0a61dcb556de 100644 --- a/vendor/autoload.php +++ b/vendor/autoload.php @@ -9,4 +9,4 @@ require_once __DIR__ . '/composer/autoload_real.php'; -return ComposerAutoloaderInitcd4fb762b0a3dd402c04f29837ba6ae5::getLoader(); +return ComposerAutoloaderInitec8a7af6b45877f163da24591918fc50::getLoader(); diff --git a/vendor/composer/autoload_real.php b/vendor/composer/autoload_real.php index 21008155d9a0..8390e1d17628 100644 --- a/vendor/composer/autoload_real.php +++ b/vendor/composer/autoload_real.php @@ -2,7 +2,7 @@ // autoload_real.php @generated by Composer -class ComposerAutoloaderInitcd4fb762b0a3dd402c04f29837ba6ae5 +class ComposerAutoloaderInitec8a7af6b45877f163da24591918fc50 { private static $loader; @@ -22,19 +22,19 @@ public static function getLoader() return self::$loader; } - spl_autoload_register(array('ComposerAutoloaderInitcd4fb762b0a3dd402c04f29837ba6ae5', 'loadClassLoader'), true, true); + spl_autoload_register(array('ComposerAutoloaderInitec8a7af6b45877f163da24591918fc50', 'loadClassLoader'), true, true); self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__)); - spl_autoload_unregister(array('ComposerAutoloaderInitcd4fb762b0a3dd402c04f29837ba6ae5', 'loadClassLoader')); + spl_autoload_unregister(array('ComposerAutoloaderInitec8a7af6b45877f163da24591918fc50', 'loadClassLoader')); require __DIR__ . '/autoload_static.php'; - call_user_func(\Composer\Autoload\ComposerStaticInitcd4fb762b0a3dd402c04f29837ba6ae5::getInitializer($loader)); + call_user_func(\Composer\Autoload\ComposerStaticInitec8a7af6b45877f163da24591918fc50::getInitializer($loader)); $loader->setClassMapAuthoritative(true); $loader->register(true); - $includeFiles = \Composer\Autoload\ComposerStaticInitcd4fb762b0a3dd402c04f29837ba6ae5::$files; + $includeFiles = \Composer\Autoload\ComposerStaticInitec8a7af6b45877f163da24591918fc50::$files; foreach ($includeFiles as $fileIdentifier => $file) { - composerRequirecd4fb762b0a3dd402c04f29837ba6ae5($fileIdentifier, $file); + composerRequireec8a7af6b45877f163da24591918fc50($fileIdentifier, $file); } return $loader; @@ -46,7 +46,7 @@ public static function getLoader() * @param string $file * @return void */ -function composerRequirecd4fb762b0a3dd402c04f29837ba6ae5($fileIdentifier, $file) +function composerRequireec8a7af6b45877f163da24591918fc50($fileIdentifier, $file) { if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) { $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true; diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php index 73a653abd80f..6bcb3cf04516 100644 --- a/vendor/composer/autoload_static.php +++ b/vendor/composer/autoload_static.php @@ -4,7 +4,7 @@ namespace Composer\Autoload; -class ComposerStaticInitcd4fb762b0a3dd402c04f29837ba6ae5 +class ComposerStaticInitec8a7af6b45877f163da24591918fc50 { public static $files = array ( '320cde22f66dd4f5d3fd621d3e88b98f' => __DIR__ . '/..' . '/symfony/polyfill-ctype/bootstrap.php', @@ -3919,9 +3919,9 @@ class ComposerStaticInitcd4fb762b0a3dd402c04f29837ba6ae5 public static function getInitializer(ClassLoader $loader) { return \Closure::bind(function () use ($loader) { - $loader->prefixLengthsPsr4 = ComposerStaticInitcd4fb762b0a3dd402c04f29837ba6ae5::$prefixLengthsPsr4; - $loader->prefixDirsPsr4 = ComposerStaticInitcd4fb762b0a3dd402c04f29837ba6ae5::$prefixDirsPsr4; - $loader->classMap = ComposerStaticInitcd4fb762b0a3dd402c04f29837ba6ae5::$classMap; + $loader->prefixLengthsPsr4 = ComposerStaticInitec8a7af6b45877f163da24591918fc50::$prefixLengthsPsr4; + $loader->prefixDirsPsr4 = ComposerStaticInitec8a7af6b45877f163da24591918fc50::$prefixDirsPsr4; + $loader->classMap = ComposerStaticInitec8a7af6b45877f163da24591918fc50::$classMap; }, null, ClassLoader::class); } diff --git a/vendor/scoper-autoload.php b/vendor/scoper-autoload.php index 41e325ee858c..3ecd138a98e8 100644 --- a/vendor/scoper-autoload.php +++ b/vendor/scoper-autoload.php @@ -9,8 +9,8 @@ if (!class_exists('AutoloadIncluder', false) && !interface_exists('AutoloadIncluder', false) && !trait_exists('AutoloadIncluder', false)) { spl_autoload_call('RectorPrefix20220527\AutoloadIncluder'); } -if (!class_exists('ComposerAutoloaderInitcd4fb762b0a3dd402c04f29837ba6ae5', false) && !interface_exists('ComposerAutoloaderInitcd4fb762b0a3dd402c04f29837ba6ae5', false) && !trait_exists('ComposerAutoloaderInitcd4fb762b0a3dd402c04f29837ba6ae5', false)) { - spl_autoload_call('RectorPrefix20220527\ComposerAutoloaderInitcd4fb762b0a3dd402c04f29837ba6ae5'); +if (!class_exists('ComposerAutoloaderInitec8a7af6b45877f163da24591918fc50', false) && !interface_exists('ComposerAutoloaderInitec8a7af6b45877f163da24591918fc50', false) && !trait_exists('ComposerAutoloaderInitec8a7af6b45877f163da24591918fc50', false)) { + spl_autoload_call('RectorPrefix20220527\ComposerAutoloaderInitec8a7af6b45877f163da24591918fc50'); } if (!class_exists('Helmich\TypoScriptParser\Parser\AST\Statement', false) && !interface_exists('Helmich\TypoScriptParser\Parser\AST\Statement', false) && !trait_exists('Helmich\TypoScriptParser\Parser\AST\Statement', false)) { spl_autoload_call('RectorPrefix20220527\Helmich\TypoScriptParser\Parser\AST\Statement'); @@ -59,9 +59,9 @@ function print_node() { return \RectorPrefix20220527\print_node(...func_get_args()); } } -if (!function_exists('composerRequirecd4fb762b0a3dd402c04f29837ba6ae5')) { - function composerRequirecd4fb762b0a3dd402c04f29837ba6ae5() { - return \RectorPrefix20220527\composerRequirecd4fb762b0a3dd402c04f29837ba6ae5(...func_get_args()); +if (!function_exists('composerRequireec8a7af6b45877f163da24591918fc50')) { + function composerRequireec8a7af6b45877f163da24591918fc50() { + return \RectorPrefix20220527\composerRequireec8a7af6b45877f163da24591918fc50(...func_get_args()); } } if (!function_exists('scanPath')) {