From e83abaf7cdd69187a4461647ed8ab9f9dff98005 Mon Sep 17 00:00:00 2001 From: Reedy Date: Sat, 15 Apr 2023 20:23:56 +0100 Subject: [PATCH] Drop composer 1.x support --- .github/workflows/CI.yaml | 11 --- README.md | 2 + composer.json | 2 +- src/ExtraPackage.php | 20 ++--- src/Logger.php | 9 +-- src/MergePlugin.php | 22 ++---- src/PluginState.php | 16 ---- tests/phpunit/MergePluginTest.php | 124 ++++++++++-------------------- 8 files changed, 57 insertions(+), 149 deletions(-) diff --git a/.github/workflows/CI.yaml b/.github/workflows/CI.yaml index 47da365..a704faa 100644 --- a/.github/workflows/CI.yaml +++ b/.github/workflows/CI.yaml @@ -36,17 +36,6 @@ jobs: sudo apt-add-repository ppa:ondrej/php -y sudo apt-fast install -y --no-install-recommends php${{ matrix.php }}-ast - - name: Use Composer v1 - run: composer require --dev --no-update composer/composer:^1.1 - - - name: Print Composer version - run: composer --version - - - name: composer install - run: composer update --no-interaction --no-progress --ansi - - - run: composer test - - name: Use Composer v2 run: composer require --dev --no-update composer/composer:^2.0 diff --git a/README.md b/README.md index d3274a7..67bb01b 100644 --- a/README.md +++ b/README.md @@ -28,6 +28,8 @@ Composer Merge Plugin 1.4.x (and older) requires Composer 1.x. Composer Merge Plugin 2.0.x (and newer) is compatible with both Composer 2.x and 1.x. +Composer Merge Plugin 3.0.x (and newer) is requires Composer 2.x. + ``` $ composer require wikimedia/composer-merge-plugin ``` diff --git a/composer.json b/composer.json index 8f09aa5..1187d5a 100644 --- a/composer.json +++ b/composer.json @@ -13,7 +13,7 @@ "prefer-stable": true, "require": { "php": ">=7.4.0", - "composer-plugin-api": "^1.1||^2.0" + "composer-plugin-api": "^2.0" }, "require-dev": { "ext-json": "*", diff --git a/src/ExtraPackage.php b/src/ExtraPackage.php index 2471cb0..ec2b4ab 100644 --- a/src/ExtraPackage.php +++ b/src/ExtraPackage.php @@ -326,9 +326,7 @@ protected function mergeOrDefer( } } - if (!$state->isComposer1()) { - Intervals::clear(); - } + Intervals::clear(); return $origin; } @@ -348,18 +346,14 @@ protected function mergeConstraints(Link $origin, Link $merge, PluginState $stat $oldPrettyString = $origin->getConstraint()->getPrettyString(); $newPrettyString = $merge->getConstraint()->getPrettyString(); - if ($state->isComposer1()) { - $constraintClass = MultiConstraint::class; - } else { - $constraintClass = \Composer\Semver\Constraint\MultiConstraint::class; + $constraintClass = \Composer\Semver\Constraint\MultiConstraint::class; - if (Intervals::isSubsetOf($origin->getConstraint(), $merge->getConstraint())) { - return $origin; - } + if (Intervals::isSubsetOf($origin->getConstraint(), $merge->getConstraint())) { + return $origin; + } - if (Intervals::isSubsetOf($merge->getConstraint(), $origin->getConstraint())) { - return $merge; - } + if (Intervals::isSubsetOf($merge->getConstraint(), $origin->getConstraint())) { + return $merge; } $newConstraint = $constraintClass::create([ diff --git a/src/Logger.php b/src/Logger.php index 50bfdd2..2fa35c0 100644 --- a/src/Logger.php +++ b/src/Logger.php @@ -89,14 +89,7 @@ public function warning($message) */ public function log($message) { - if (method_exists($this->inputOutput, 'writeError')) { - $this->inputOutput->writeError($message); - } else { - // @codeCoverageIgnoreStart - // Backwards compatibility for Composer before cb336a5 - $this->inputOutput->write($message); - // @codeCoverageIgnoreEnd - } + $this->inputOutput->writeError($message); } } // vim:sw=4:ts=4:sts=4:et: diff --git a/src/MergePlugin.php b/src/MergePlugin.php index a9af5b6..1031ca3 100644 --- a/src/MergePlugin.php +++ b/src/MergePlugin.php @@ -343,14 +343,13 @@ public function onPostInstallOrUpdate(ScriptEvent $event) $lockBackup = null; $lock = null; - if (!$this->state->isComposer1()) { - $file = Factory::getComposerFile(); - $lock = Factory::getLockFile($file); - if (file_exists($lock)) { - $lockBackup = file_get_contents($lock); - } + $file = Factory::getComposerFile(); + $lock = Factory::getLockFile($file); + if (file_exists($lock)) { + $lockBackup = file_get_contents($lock); } + $config = $this->composer->getConfig(); $preferSource = $config->get('preferred-install') === 'source'; $preferDist = $config->get('preferred-install') === 'dist'; @@ -371,17 +370,10 @@ public function onPostInstallOrUpdate(ScriptEvent $event) ); $installer->setUpdate(true); - - if ($this->state->isComposer1()) { - // setUpdateWhitelist() only exists in composer 1.x. Configure as to run phan against composer 2.x - // @phan-suppress-next-line PhanUndeclaredMethod - $installer->setUpdateWhitelist($requirements); - } else { - $installer->setUpdateAllowList($requirements); - } + $installer->setUpdateAllowList($requirements); $status = $installer->run(); - if (( $status !== 0 ) && $lockBackup && $lock && !$this->state->isComposer1()) { + if (( $status !== 0 ) && $lockBackup && $lock) { $this->logger->log( "\n".''. 'Update to apply merge settings failed, reverting '.$lock.' to its original content.'. diff --git a/src/PluginState.php b/src/PluginState.php index 1987883..eab355b 100644 --- a/src/PluginState.php +++ b/src/PluginState.php @@ -25,11 +25,6 @@ class PluginState */ protected $composer; - /** - * @var bool $isComposer1 - */ - protected $isComposer1; - /** * @var array $includes */ @@ -138,17 +133,6 @@ class PluginState public function __construct(Composer $composer) { $this->composer = $composer; - $this->isComposer1 = version_compare(PluginInterface::PLUGIN_API_VERSION, '2.0.0', '<'); - } - - /** - * Test if this plugin runs within Composer 1. - * - * @return bool - */ - public function isComposer1() - { - return $this->isComposer1; } /** diff --git a/tests/phpunit/MergePluginTest.php b/tests/phpunit/MergePluginTest.php index 1eb4d5f..7638f0e 100644 --- a/tests/phpunit/MergePluginTest.php +++ b/tests/phpunit/MergePluginTest.php @@ -596,24 +596,16 @@ function ($args) use ($that, $io) { $config = new Config(); $mockIO = $io->reveal(); - if (version_compare('2.0.0', PluginInterface::PLUGIN_API_VERSION, '>')) { - return new VcsRepository( - $args[1], - $mockIO, - $config - ); - } else { - $httpDownloader = new HttpDownloader( - $mockIO, - $config - ); - return new VcsRepository( - $args[1], - $mockIO, - $config, - $httpDownloader - ); - } + $httpDownloader = new HttpDownloader( + $mockIO, + $config + ); + return new VcsRepository( + $args[1], + $mockIO, + $config, + $httpDownloader + ); } ); $repoManager->prependRepository(Argument::any())->will( @@ -688,25 +680,17 @@ function ($args) use ($that, $io) { $config = new Config(); $mockIO = $io->reveal(); - if (version_compare('2.0.0', PluginInterface::PLUGIN_API_VERSION, '>')) { - return new VcsRepository( - $args[1], - $mockIO, - $config - ); - } else { - $httpDownloader = new HttpDownloader( - $mockIO, - $config - ); - - return new VcsRepository( - $args[1], - $mockIO, - $config, - $httpDownloader - ); - } + $httpDownloader = new HttpDownloader( + $mockIO, + $config + ); + + return new VcsRepository( + $args[1], + $mockIO, + $config, + $httpDownloader + ); } ); $repoManager->prependRepository(Argument::any())->will( @@ -1252,13 +1236,6 @@ public function testHasBranchAlias($fireInit) $io = $this->io; $dir = $this->fixtureDir(__FUNCTION__); - // RootAliasPackage was updated in 06c44ce to include more setters - // that we take advantage of if available - $haveComposerWithCompleteRootAlias = method_exists( - RootPackageInterface::class, - 'setRepositories' - ); - $repoManager = $this->prophesize( RepositoryManager::class ); @@ -1268,25 +1245,17 @@ public function testHasBranchAlias($fireInit) )->will(function ($args) use ($io) { $config = new Config(); $mockIO = $io->reveal(); - if (version_compare('2.0.0', PluginInterface::PLUGIN_API_VERSION, '>')) { - return new VcsRepository( - $args[1], - $mockIO, - $config - ); - } else { - $httpDownloader = new HttpDownloader( - $mockIO, - $config - ); + $httpDownloader = new HttpDownloader( + $mockIO, + $config + ); - return new VcsRepository( - $args[1], - $mockIO, - $config, - $httpDownloader - ); - } + return new VcsRepository( + $args[1], + $mockIO, + $config, + $httpDownloader + ); }); $repoManager->prependRepository(Argument::any())->shouldBeCalled(); $this->composer->getRepositoryManager()->will( @@ -1306,29 +1275,14 @@ function () use ($repoManager) { $alias->setDevRequires(Argument::type('array'))->shouldBeCalled(); $alias->setRequires(Argument::type('array'))->shouldBeCalled(); - if ($haveComposerWithCompleteRootAlias) { - // When Composer supports it we will apply our changes directly to - // the RootAliasPackage - $alias->setAutoload(Argument::type('array'))->shouldBeCalled(); - $alias->setConflicts(Argument::type('array'))->shouldBeCalled(); - $alias->setDevAutoload(Argument::type('array'))->shouldBeCalled(); - $alias->setProvides(Argument::type('array'))->shouldBeCalled(); - $alias->setReplaces(Argument::type('array'))->shouldBeCalled(); - $alias->setRepositories(Argument::type('array'))->shouldBeCalled(); - $alias->setStabilityFlags(Argument::type('array'))->shouldBeCalled(); - $alias->setSuggests(Argument::type('array'))->shouldBeCalled(); - } else { - // With older versions of Composer we will fall back to unwrapping - // the aliased RootPackage and make calls to it - $root->setAutoload(Argument::type('array'))->shouldBeCalled(); - $root->setConflicts(Argument::type('array'))->shouldBeCalled(); - $root->setDevAutoload(Argument::type('array'))->shouldBeCalled(); - $root->setProvides(Argument::type('array'))->shouldBeCalled(); - $root->setReplaces(Argument::type('array'))->shouldBeCalled(); - $root->setRepositories(Argument::type('array'))->shouldBeCalled(); - $root->setSuggests(Argument::type('array'))->shouldBeCalled(); - $alias->getAliasOf()->shouldBeCalled(); - } + $alias->setAutoload(Argument::type('array'))->shouldBeCalled(); + $alias->setConflicts(Argument::type('array'))->shouldBeCalled(); + $alias->setDevAutoload(Argument::type('array'))->shouldBeCalled(); + $alias->setProvides(Argument::type('array'))->shouldBeCalled(); + $alias->setReplaces(Argument::type('array'))->shouldBeCalled(); + $alias->setRepositories(Argument::type('array'))->shouldBeCalled(); + $alias->setStabilityFlags(Argument::type('array'))->shouldBeCalled(); + $alias->setSuggests(Argument::type('array'))->shouldBeCalled(); $alias = $alias->reveal();