parent
685ec29573
commit
5e6ccae116
|
@ -10,6 +10,11 @@ parameters:
|
||||||
count: 1
|
count: 1
|
||||||
path: ../src/Composer/Autoload/ClassLoader.php
|
path: ../src/Composer/Autoload/ClassLoader.php
|
||||||
|
|
||||||
|
-
|
||||||
|
message: "#^Casting to string something that's already string\\.$#"
|
||||||
|
count: 1
|
||||||
|
path: ../src/Composer/Command/ArchiveCommand.php
|
||||||
|
|
||||||
-
|
-
|
||||||
message: "#^Only booleans are allowed in an if condition, string\\|false given\\.$#"
|
message: "#^Only booleans are allowed in an if condition, string\\|false given\\.$#"
|
||||||
count: 1
|
count: 1
|
||||||
|
|
|
@ -180,11 +180,6 @@ parameters:
|
||||||
count: 1
|
count: 1
|
||||||
path: ../src/Composer/Command/ArchiveCommand.php
|
path: ../src/Composer/Command/ArchiveCommand.php
|
||||||
|
|
||||||
-
|
|
||||||
message: "#^Only booleans are allowed in an elseif condition, array\\<Composer\\\\Package\\\\BasePackage\\> given\\.$#"
|
|
||||||
count: 1
|
|
||||||
path: ../src/Composer/Command/ArchiveCommand.php
|
|
||||||
|
|
||||||
-
|
-
|
||||||
message: "#^Only booleans are allowed in an if condition, Composer\\\\Composer\\|null given\\.$#"
|
message: "#^Only booleans are allowed in an if condition, Composer\\\\Composer\\|null given\\.$#"
|
||||||
count: 3
|
count: 3
|
||||||
|
|
|
@ -18,8 +18,12 @@ use Composer\Config;
|
||||||
use Composer\Composer;
|
use Composer\Composer;
|
||||||
use Composer\Package\BasePackage;
|
use Composer\Package\BasePackage;
|
||||||
use Composer\Package\CompletePackageInterface;
|
use Composer\Package\CompletePackageInterface;
|
||||||
|
use Composer\Package\Version\VersionParser;
|
||||||
|
use Composer\Package\Version\VersionSelector;
|
||||||
|
use Composer\Pcre\Preg;
|
||||||
use Composer\Repository\CompositeRepository;
|
use Composer\Repository\CompositeRepository;
|
||||||
use Composer\Repository\RepositoryFactory;
|
use Composer\Repository\RepositoryFactory;
|
||||||
|
use Composer\Repository\RepositorySet;
|
||||||
use Composer\Script\ScriptEvents;
|
use Composer\Script\ScriptEvents;
|
||||||
use Composer\Plugin\CommandEvent;
|
use Composer\Plugin\CommandEvent;
|
||||||
use Composer\Plugin\PluginEvents;
|
use Composer\Plugin\PluginEvents;
|
||||||
|
@ -156,22 +160,38 @@ EOT
|
||||||
if ($composer = $this->tryComposer()) {
|
if ($composer = $this->tryComposer()) {
|
||||||
$localRepo = $composer->getRepositoryManager()->getLocalRepository();
|
$localRepo = $composer->getRepositoryManager()->getLocalRepository();
|
||||||
$repo = new CompositeRepository(array_merge([$localRepo], $composer->getRepositoryManager()->getRepositories()));
|
$repo = new CompositeRepository(array_merge([$localRepo], $composer->getRepositoryManager()->getRepositories()));
|
||||||
|
$minStability = $composer->getPackage()->getMinimumStability();
|
||||||
} else {
|
} else {
|
||||||
$defaultRepos = RepositoryFactory::defaultReposWithDefaultManager($io);
|
$defaultRepos = RepositoryFactory::defaultReposWithDefaultManager($io);
|
||||||
$io->writeError('No composer.json found in the current directory, searching packages from ' . implode(', ', array_keys($defaultRepos)));
|
$io->writeError('No composer.json found in the current directory, searching packages from ' . implode(', ', array_keys($defaultRepos)));
|
||||||
$repo = new CompositeRepository($defaultRepos);
|
$repo = new CompositeRepository($defaultRepos);
|
||||||
|
$minStability = 'stable';
|
||||||
}
|
}
|
||||||
|
|
||||||
$packages = $repo->findPackages($packageName, $version);
|
if ($version !== null && Preg::isMatchStrictGroups('{@(stable|RC|beta|alpha|dev)$}i', $version, $match)) {
|
||||||
|
$minStability = $match[1];
|
||||||
|
$version = (string) substr($version, 0, -strlen($match[0]));
|
||||||
|
}
|
||||||
|
|
||||||
|
$repoSet = new RepositorySet($minStability);
|
||||||
|
$repoSet->addRepository($repo);
|
||||||
|
$parser = new VersionParser();
|
||||||
|
$constraint = $version !== null ? $parser->parseConstraints($version) : null;
|
||||||
|
$packages = $repoSet->findPackages(strtolower($packageName), $constraint);
|
||||||
|
|
||||||
if (count($packages) > 1) {
|
if (count($packages) > 1) {
|
||||||
$package = reset($packages);
|
$versionSelector = new VersionSelector($repoSet);
|
||||||
|
$package = $versionSelector->findBestCandidate(strtolower($packageName), $version, $minStability);
|
||||||
|
if ($package === false) {
|
||||||
|
$package = reset($packages);
|
||||||
|
}
|
||||||
|
|
||||||
$io->writeError('<info>Found multiple matches, selected '.$package->getPrettyString().'.</info>');
|
$io->writeError('<info>Found multiple matches, selected '.$package->getPrettyString().'.</info>');
|
||||||
$io->writeError('Alternatives were '.implode(', ', array_map(static function ($p): string {
|
$io->writeError('Alternatives were '.implode(', ', array_map(static function ($p): string {
|
||||||
return $p->getPrettyString();
|
return $p->getPrettyString();
|
||||||
}, $packages)).'.');
|
}, $packages)).'.');
|
||||||
$io->writeError('<comment>Please use a more specific constraint to pick a different package.</comment>');
|
$io->writeError('<comment>Please use a more specific constraint to pick a different package.</comment>');
|
||||||
} elseif ($packages) {
|
} elseif (count($packages) === 1) {
|
||||||
$package = reset($packages);
|
$package = reset($packages);
|
||||||
$io->writeError('<info>Found an exact match '.$package->getPrettyString().'.</info>');
|
$io->writeError('<info>Found an exact match '.$package->getPrettyString().'.</info>');
|
||||||
} else {
|
} else {
|
||||||
|
@ -183,6 +203,9 @@ EOT
|
||||||
if (!$package instanceof CompletePackageInterface) {
|
if (!$package instanceof CompletePackageInterface) {
|
||||||
throw new \LogicException('Expected a CompletePackageInterface instance but found '.get_class($package));
|
throw new \LogicException('Expected a CompletePackageInterface instance but found '.get_class($package));
|
||||||
}
|
}
|
||||||
|
if (!$package instanceof BasePackage) {
|
||||||
|
throw new \LogicException('Expected a BasePackage instance but found '.get_class($package));
|
||||||
|
}
|
||||||
|
|
||||||
return $package;
|
return $package;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue