diff --git a/composer.json b/composer.json index 179fc25..3e9cf3b 100644 --- a/composer.json +++ b/composer.json @@ -66,6 +66,9 @@ ], "post-drupal-scaffold-cmd": [ "DrupalGitCloneProject\\ComposerScripts::postDrupalScaffold" + ], + "pre-pool-create": [ + "DrupalGitCloneProject\\ComposerCoreVersionsLeniency::prePoolCreate" ] }, "autoload": { diff --git a/src/ComposerCoreVersionsLeniency.php b/src/ComposerCoreVersionsLeniency.php new file mode 100644 index 0000000..d26ab36 --- /dev/null +++ b/src/ComposerCoreVersionsLeniency.php @@ -0,0 +1,82 @@ +getPackages(); + foreach ($packages as $package) { + $type = $package->getType(); + if ($type === 'drupal-core') { + continue; + } + + if ($type != 'drupal-module') { + continue; + } + + $requires = $package->getRequires(); + + if (!isset($requires['drupal/core'])) { + continue; + } + + $drupal_core_require = $requires['drupal/core']; + + $pretty_constraint = $drupal_core_require->getPrettyConstraint(); + if (str_contains($pretty_constraint, '^11')) { + continue; + } + + // Make a new constraint with the 11 requirement appended. + $pretty_constraint_with_11 = $pretty_constraint . ' || ^11'; + $constraint_with_11 = $version_parser->parseConstraints($pretty_constraint_with_11); + + // Replace the existing core requirement with the new one. + $requires['drupal/core'] = new Link( + $drupal_core_require->getSource(), + $drupal_core_require->getTarget(), + $constraint_with_11, + $drupal_core_require->getDescription(), + $constraint_with_11->getPrettyString(), + ); + + // No idea why we need to check CompletePackage, just aping + // mglaman/composer-drupal-lenient. + if ($package instanceof CompletePackage) { + // @note `setRequires` is on Package but not PackageInterface. + $package->setRequires($requires); + } + } + } + +} diff --git a/src/ComposerScripts.php b/src/ComposerScripts.php index a96ba4e..166cd80 100644 --- a/src/ComposerScripts.php +++ b/src/ComposerScripts.php @@ -4,6 +4,10 @@ use Composer\Script\Event; +// Development: this makes symfony var-dumper work. +// See https://github.com/composer/composer/issues/7911 +// include_once './vendor/symfony/var-dumper/Resources/functions/dump.php'; + /** * Provides Composer scripts for setting up Drupal from a git clone. */