From 9a1d9f3a416d03c28ccba45952a37cccba57d0d9 Mon Sep 17 00:00:00 2001 From: Jerry Radwick Date: Wed, 4 Mar 2026 11:09:27 -0400 Subject: [PATCH 1/3] Always recreate composer.lock and vendor/ during 'provision' --- Makefile | 4 ++++ 1 file changed, 4 insertions(+) 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 From a0f18a88526390fa70d121ff4ef2e92a0dcd0265 Mon Sep 17 00:00:00 2001 From: Jerry Radwick Date: Wed, 4 Mar 2026 11:10:15 -0400 Subject: [PATCH 2/3] Support Drupal 10.x and PHP 8.2; refs #93 --- .docker/main/.profile | 1 + .docker/main/Dockerfile | 2 +- .docker/main/drupal/composer.json | 8 ++------ .docker/main/empty-drupal/composer.json | 2 +- .github/workflows/validation.yml | 2 +- composer.json | 2 +- test/Integration/Command/ExecCommandTest.php | 8 +++++--- 7 files changed, 12 insertions(+), 13 deletions(-) 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/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/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(<< Date: Wed, 4 Mar 2026 11:10:37 -0400 Subject: [PATCH 3/3] Support Symfony Console 6.x; refs #93 --- src/Command/ExecCommand.php | 14 ++++++-------- src/Model/Placeholder.php | 1 - 2 files changed, 6 insertions(+), 9 deletions(-) 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.