diff --git a/.docker/main/.profile b/.docker/main/.profile index 00ec130..02c99bf 100644 --- a/.docker/main/.profile +++ b/.docker/main/.profile @@ -1 +1,2 @@ +# Remove /opt/drupal/vendor/bin from $PATH. PATH=$(echo "$PATH" | sed -e "s/:\/opt\/drupal\/vendor\/bin//") diff --git a/.docker/main/Dockerfile b/.docker/main/Dockerfile index 50d6664..4ad179a 100644 --- a/.docker/main/Dockerfile +++ b/.docker/main/Dockerfile @@ -1,4 +1,4 @@ -FROM drupal:11-php8.3-apache +FROM drupal:11-php8.2-apache ENV PHP_INI_PATH="$PHP_INI_DIR/conf.d/php.ini" ENV DRUPAL_PATH="/opt/drupal" diff --git a/.docker/main/drupal/composer.json b/.docker/main/drupal/composer.json index 605bfda..6266774 100644 --- a/.docker/main/drupal/composer.json +++ b/.docker/main/drupal/composer.json @@ -18,7 +18,7 @@ "require": { "composer/installers": "^2", "drupal/core-composer-scaffold": "*", - "drupal/core-recommended": "^11", + "drupal/core-recommended": "^10", "drupal/core-vendor-hardening": "*", "jigarius/drall": "*" }, @@ -34,8 +34,7 @@ "dealerdirect/phpcodesniffer-composer-installer": true, "drupal/core-composer-scaffold": true, "drupal/core-project-message": true, - "drupal/core-vendor-hardening": true, - "phpro/grumphp": true + "drupal/core-vendor-hardening": true } }, "extra": { @@ -73,8 +72,5 @@ "type:drupal-custom-theme" ] } - }, - "require-dev": { - "phpro/grumphp": "^2" } } diff --git a/.docker/main/empty-drupal/composer.json b/.docker/main/empty-drupal/composer.json index 596656e..b76d78d 100644 --- a/.docker/main/empty-drupal/composer.json +++ b/.docker/main/empty-drupal/composer.json @@ -18,7 +18,7 @@ "require": { "composer/installers": "^2", "drupal/core-composer-scaffold": "*", - "drupal/core-recommended": "^11", + "drupal/core-recommended": "^10", "drupal/core-vendor-hardening": "*", "jigarius/drall": "*" }, diff --git a/.github/workflows/validation.yml b/.github/workflows/validation.yml index 5bf9f0c..9f1d0e7 100644 --- a/.github/workflows/validation.yml +++ b/.github/workflows/validation.yml @@ -9,7 +9,7 @@ jobs: strategy: matrix: os: ['ubuntu-latest'] - php-versions: ['8.3', '8.4'] + php-versions: ['8.2', '8.3', '8.4'] steps: - uses: actions/checkout@v2 - uses: shivammathur/setup-php@v2 diff --git a/Makefile b/Makefile index b2a2bac..b011e7c 100644 --- a/Makefile +++ b/Makefile @@ -19,6 +19,7 @@ provision/drupal: cp /opt/drall/.docker/main/drupal/composer.json /opt/drupal/ || echo "Skipping: drupal/composer.json" rm -f /opt/drupal/composer.lock + rm -Rf /opt/drupal/vendor composer --working-dir=/opt/drupal install --no-progress cp -r /opt/drall/.docker/main/drupal/drush /opt/drupal/ || echo "Skipping: drupal/drush" cp -r /opt/drall/.docker/main/drupal/web/sites /opt/drupal/web/ || echo "Skipping: drupal/web/sites" @@ -52,6 +53,7 @@ provision/empty-drupal: mkdir -p /opt/empty-drupal cp /opt/drall/.docker/main/empty-drupal/composer.json /opt/empty-drupal/ || echo "Skipping: empty-drupal/composer.json" rm -f /opt/empty-drupal/composer.lock + rm -Rf /opt/empty-drupal/vendor composer --working-dir=/opt/empty-drupal install --no-progress cp /opt/drall/.docker/main/empty-drupal/web/sites/sites.php /opt/empty-drupal/web/sites/sites.php @@ -78,6 +80,8 @@ provision/drupal/database: .PHONY: provision/drall provision/drall: + rm -f /opt/drall/composer.lock + rm -Rf /opt/drall/vendor composer install --working-dir=/opt/drall --no-progress diff --git a/composer.json b/composer.json index c4b736e..656fcce 100644 --- a/composer.json +++ b/composer.json @@ -17,7 +17,7 @@ ], "homepage": "https://github.com/jigarius/drall", "require": { - "php": ">= 8.3", + "php": ">= 8.2", "amphp/pipeline": "^1.2", "amphp/process": "^2", "consolidation/filter-via-dot-access-data": "^2.0", diff --git a/src/Command/ExecCommand.php b/src/Command/ExecCommand.php index cb2c811..637d74f 100644 --- a/src/Command/ExecCommand.php +++ b/src/Command/ExecCommand.php @@ -117,12 +117,11 @@ protected function initialize(InputInterface $input, OutputInterface $output): v } private function checkOptionsSeparator(InputInterface $input, OutputInterface $output): void { - if (!method_exists($input, 'getRawTokens')) { - return; - } + // @todo Use ::getRawTokens() when Symfony Console 7.x becomes a compulsory requirement. + $rawTokens = preg_split('/\s+/', (string) $input); // If options are present, an options separator (--) is required. - if (in_array('--', $input->getRawTokens(TRUE))) { + if (in_array('--', $rawTokens)) { return; } @@ -138,12 +137,11 @@ private function checkOptionsSeparator(InputInterface $input, OutputInterface $o } private function checkObsoleteOptions(InputInterface $input, OutputInterface $output): void { - if (!method_exists($input, 'getRawTokens')) { - return; - } + // @todo Use ::getRawTokens() when Symfony Console 7.x becomes a compulsory requirement. + $rawTokens = preg_split('/\s+/', (string) $input); // If obsolete --drall-* options are present, then abort. - foreach ($input->getRawTokens(TRUE) as $token) { + foreach ($rawTokens as $token) { if (str_starts_with($token, '--drall-')) { $output->writeln(<<--drall-* options have been renamed. diff --git a/src/Model/Placeholder.php b/src/Model/Placeholder.php index add2d33..c0d3d02 100644 --- a/src/Model/Placeholder.php +++ b/src/Model/Placeholder.php @@ -8,7 +8,6 @@ enum Placeholder: string { case Site = '@@site'; // Represents the site's directory under "DRUPAL/sites/". - // @todo Rename to @@dir. case Directory = '@@dir'; // Represents keys in the $sites array. diff --git a/test/Integration/Command/ExecCommandTest.php b/test/Integration/Command/ExecCommandTest.php index cafb40b..755fd29 100644 --- a/test/Integration/Command/ExecCommandTest.php +++ b/test/Integration/Command/ExecCommandTest.php @@ -505,9 +505,11 @@ public function testCatchStdErrOutput(): void { // Ignore the Drush Version. $output = preg_replace('@(Drush version :) ([\d|\.|-]+)@', '$1 x.y.z', $process->getOutput()); - $this->assertOutputEquals(<<assertOutputContainsString(<<assertOutputContainsString(<<