diff --git a/src/Builder/ArchiveBuilderHelper.php b/src/Builder/ArchiveBuilderHelper.php index a3104d0..ee80b9b 100644 --- a/src/Builder/ArchiveBuilderHelper.php +++ b/src/Builder/ArchiveBuilderHelper.php @@ -14,6 +14,8 @@ namespace Composer\Satis\Builder; use Composer\Package\PackageInterface; +use Composer\Package\Version\VersionSelector; +use Composer\Repository\RepositorySet; use Symfony\Component\Console\Output\OutputInterface; class ArchiveBuilderHelper @@ -60,6 +62,18 @@ public function isSkippable(PackageInterface $package): bool return true; } + if (true === $this->archiveConfig['only-best-candidates']) { + $repositorySet = new RepositorySet(); + $repositorySet->addRepository($package->getRepository()); + $selector = new VersionSelector($repositorySet); + $match = $selector->findBestCandidate($package->getName()); + if($match && $match->getVersion() !== $package->getVersion()) { + $this->output->writeln(sprintf("Skipping '%s' (is not best candidate)", $name)); + + return true; + } + } + $names = $package->getNames(); if (0 !== count($this->archiveConfig['whitelist']) && !$this->isOneOfNamesInList($names, $this->archiveConfig['whitelist'])) {