From 136c68f9b5bed0d6f1ed72ebcce60abd3ff9d1ff Mon Sep 17 00:00:00 2001 From: Sebastian Schreiber Date: Tue, 20 Apr 2021 11:49:47 +0200 Subject: [PATCH 1/3] [TASK] Use rector-installer to load config of extensions - Relates: #6129 --- composer.json | 21 ++++++++------- config/config.php | 32 ++++------------------- src/Bootstrap/ExtensionConfigResolver.php | 5 ++-- src/Bootstrap/RectorConfigsResolver.php | 1 - 4 files changed, 20 insertions(+), 39 deletions(-) diff --git a/composer.json b/composer.json index a28bbab5f36..1218051de75 100644 --- a/composer.json +++ b/composer.json @@ -37,15 +37,16 @@ "nette/robot-loader": "^3.4", "nette/utils": "^3.2", "nikic/php-parser": "^4.10.4", - "phpstan/phpstan": "^0.12.83", "phpstan/phpdoc-parser": "^0.5.4", + "phpstan/phpstan": "^0.12.83", "phpstan/phpstan-phpunit": "^0.12.18", - "rector/rector-symfony": "^0.10.3", - "rector/rector-nette": "^0.10.5", - "rector/rector-laravel": "^0.10.1", - "rector/rector-cakephp": "^0.10.3", - "rector/rector-phpunit": "^0.10.6", - "rector/rector-doctrine": "^0.10.2", + "rector/rector-cakephp": "dev-main", + "rector/rector-doctrine": "dev-main", + "rector/rector-installer": "dev-main", + "rector/rector-laravel": "dev-main", + "rector/rector-nette": "dev-main", + "rector/rector-phpunit": "dev-main", + "rector/rector-symfony": "dev-main", "sebastian/diff": "^4.0.4", "symfony/console": "^4.4.8|^5.1", "symfony/dependency-injection": "^5.1", @@ -73,7 +74,7 @@ "nette/forms": "^3.0", "phpstan/phpstan-nette": "^0.12.16", "phpunit/phpunit": "^9.5", - "rector/rector-generator": "^0.1.5", + "rector/rector-generator": "dev-main", "symplify/coding-standard": "^9.2.16", "symplify/easy-ci": "^9.2.16", "symplify/easy-coding-standard": "^9.2.16", @@ -153,5 +154,7 @@ "config": { "sort-packages": true, "platform-check": false - } + }, + "minimum-stability": "dev", + "prefer-stable": true } diff --git a/config/config.php b/config/config.php index 2a080b9393a..e60c55f3578 100644 --- a/config/config.php +++ b/config/config.php @@ -2,8 +2,8 @@ declare(strict_types=1); +use Rector\Core\Bootstrap\ExtensionConfigResolver; use Rector\Core\Configuration\Option; -use Rector\RectorGenerator\Bundle\RectorGeneratorBundle; use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator; return static function (ContainerConfigurator $containerConfigurator): void { @@ -12,32 +12,10 @@ $containerConfigurator->import(__DIR__ . '/services-packages.php'); $containerConfigurator->import(__DIR__ . '/parameters.php'); - // rector root - $containerConfigurator->import(__DIR__ . '/../vendor/rector/rector-symfony/config/config.php', null, 'not_found'); - $containerConfigurator->import(__DIR__ . '/../vendor/rector/rector-nette/config/config.php', null, 'not_found'); - $containerConfigurator->import(__DIR__ . '/../vendor/rector/rector-laravel/config/config.php', null, 'not_found'); - $containerConfigurator->import(__DIR__ . '/../vendor/rector/rector-phpunit/config/config.php', null, 'not_found'); - $containerConfigurator->import(__DIR__ . '/../vendor/rector/rector-cakephp/config/config.php', null, 'not_found'); - $containerConfigurator->import(__DIR__ . '/../vendor/rector/rector-doctrine/config/config.php', null, 'not_found'); - - // rector sub-package - $containerConfigurator->import(__DIR__ . '/../../rector-symfony/config/config.php', null, 'not_found'); - $containerConfigurator->import(__DIR__ . '/../../rector-nette/config/config.php', null, 'not_found'); - $containerConfigurator->import(__DIR__ . '/../../rector-laravel/config/config.php', null, 'not_found'); - $containerConfigurator->import(__DIR__ . '/../../rector-phpunit/config/config.php', null, 'not_found'); - $containerConfigurator->import(__DIR__ . '/../../rector-cakephp/config/config.php', null, 'not_found'); - $containerConfigurator->import(__DIR__ . '/../../rector-doctrine/config/config.php', null, 'not_found'); - - // only for dev - // only for dev - if (class_exists(RectorGeneratorBundle::class)) { - $containerConfigurator->import( - __DIR__ . '/../vendor/rector/rector-generator/config/config.php', - null, - 'not_found' - ); - // 3rd party dependency - $containerConfigurator->import(__DIR__ . '/../../rector-generator/config/config.php', null, 'not_found'); + $extensionConfigResolver = new ExtensionConfigResolver(); + $extensionConfigFiles = $extensionConfigResolver->provide(); + foreach ($extensionConfigFiles as $extensionConfigFile) { + $containerConfigurator->import($extensionConfigFile->getRealPath()); } // require only in dev diff --git a/src/Bootstrap/ExtensionConfigResolver.php b/src/Bootstrap/ExtensionConfigResolver.php index a62ae60cdb6..83f89135443 100644 --- a/src/Bootstrap/ExtensionConfigResolver.php +++ b/src/Bootstrap/ExtensionConfigResolver.php @@ -11,11 +11,12 @@ final class ExtensionConfigResolver { /** - * @param SmartFileInfo[] $configFileInfos * @return SmartFileInfo[] */ - public function appendExtensionsConfig(array $configFileInfos): array + public function provide(): array { + $configFileInfos = []; + if (! class_exists('Rector\RectorInstaller\GeneratedConfig')) { return $configFileInfos; } diff --git a/src/Bootstrap/RectorConfigsResolver.php b/src/Bootstrap/RectorConfigsResolver.php index 3b01a59a82d..9982f327ca4 100644 --- a/src/Bootstrap/RectorConfigsResolver.php +++ b/src/Bootstrap/RectorConfigsResolver.php @@ -70,7 +70,6 @@ public function provide(): BootstrapConfigs ) : []; $configFileInfos = $this->appendRectorRecipeConfig($argvInput, $configFileInfos); - $configFileInfos = $this->extensionConfigResolver->appendExtensionsConfig($configFileInfos); return new BootstrapConfigs($mainConfigFileInfo, $configFileInfos); } From bd0e322dbf0da40de23ea9852876d43419c8c38e Mon Sep 17 00:00:00 2001 From: Sebastian Schreiber Date: Wed, 21 Apr 2021 22:50:25 +0200 Subject: [PATCH 2/3] [TASK] Use correct versions of extensions --- composer.json | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/composer.json b/composer.json index 1218051de75..1355ef12c28 100644 --- a/composer.json +++ b/composer.json @@ -40,13 +40,13 @@ "phpstan/phpdoc-parser": "^0.5.4", "phpstan/phpstan": "^0.12.83", "phpstan/phpstan-phpunit": "^0.12.18", - "rector/rector-cakephp": "dev-main", - "rector/rector-doctrine": "dev-main", + "rector/rector-cakephp": "^0.10.4", + "rector/rector-doctrine": "^0.10.2", "rector/rector-installer": "dev-main", - "rector/rector-laravel": "dev-main", - "rector/rector-nette": "dev-main", - "rector/rector-phpunit": "dev-main", - "rector/rector-symfony": "dev-main", + "rector/rector-laravel": "^0.10.2", + "rector/rector-nette": "^0.10.6", + "rector/rector-phpunit": "^0.10.6", + "rector/rector-symfony": "^0.10.3", "sebastian/diff": "^4.0.4", "symfony/console": "^4.4.8|^5.1", "symfony/dependency-injection": "^5.1", @@ -74,7 +74,7 @@ "nette/forms": "^3.0", "phpstan/phpstan-nette": "^0.12.16", "phpunit/phpunit": "^9.5", - "rector/rector-generator": "dev-main", + "rector/rector-generator": "^0.1.6", "symplify/coding-standard": "^9.2.16", "symplify/easy-ci": "^9.2.16", "symplify/easy-coding-standard": "^9.2.16", From 84deeda5b6904e17f4a716b83abca6fa905b522a Mon Sep 17 00:00:00 2001 From: Sebastian Schreiber Date: Wed, 21 Apr 2021 23:49:33 +0200 Subject: [PATCH 3/3] [TASK] Add first release version of rector installer --- composer.json | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/composer.json b/composer.json index 1355ef12c28..01cce7fa8e9 100644 --- a/composer.json +++ b/composer.json @@ -42,7 +42,7 @@ "phpstan/phpstan-phpunit": "^0.12.18", "rector/rector-cakephp": "^0.10.4", "rector/rector-doctrine": "^0.10.2", - "rector/rector-installer": "dev-main", + "rector/rector-installer": "^0.10.0", "rector/rector-laravel": "^0.10.2", "rector/rector-nette": "^0.10.6", "rector/rector-phpunit": "^0.10.6", @@ -154,7 +154,5 @@ "config": { "sort-packages": true, "platform-check": false - }, - "minimum-stability": "dev", - "prefer-stable": true + } }