mirror of
https://github.com/composer/composer
synced 2025-05-10 09:02:59 +00:00
Fix inline aliases not being loaded when extracting dev requirements, fixes #8954
This commit is contained in:
parent
da6c0635d2
commit
a797ee1322
3 changed files with 124 additions and 19 deletions
|
@ -19,6 +19,7 @@ use Composer\EventDispatcher\EventDispatcher;
|
|||
use Composer\IO\IOInterface;
|
||||
use Composer\IO\NullIO;
|
||||
use Composer\Package\BasePackage;
|
||||
use Composer\Package\AliasPackage;
|
||||
use Composer\Package\Version\VersionParser;
|
||||
use Composer\Repository\CompositeRepository;
|
||||
use Composer\Repository\PlatformRepository;
|
||||
|
@ -44,7 +45,7 @@ class RepositorySet
|
|||
|
||||
/**
|
||||
* @var array[]
|
||||
* @psalm-var list<array{package: string, version: string, alias: string, alias_normalized: string}>
|
||||
* @psalm-var array<string, array<string, array{alias: string, alias_normalized: string}>>
|
||||
*/
|
||||
private $rootAliases;
|
||||
|
||||
|
@ -91,7 +92,7 @@ class RepositorySet
|
|||
*/
|
||||
public function __construct($minimumStability = 'stable', array $stabilityFlags = array(), array $rootAliases = array(), array $rootReferences = array(), array $rootRequires = array())
|
||||
{
|
||||
$this->rootAliases = $rootAliases;
|
||||
$this->rootAliases = $this->getRootAliasesPerPackage($rootAliases);
|
||||
$this->rootReferences = $rootReferences;
|
||||
|
||||
$this->acceptableStabilities = array();
|
||||
|
@ -249,8 +250,22 @@ class RepositorySet
|
|||
|
||||
$packages = array();
|
||||
foreach ($this->repositories as $repository) {
|
||||
$packages = array_merge($packages, $repository->getPackages());
|
||||
foreach ($repository->getPackages() as $package) {
|
||||
$packages[] = $package;
|
||||
|
||||
if (isset($this->rootAliases[$package->getName()][$package->getVersion()])) {
|
||||
$alias = $this->rootAliases[$package->getName()][$package->getVersion()];
|
||||
while ($package instanceof AliasPackage) {
|
||||
$package = $package->getAliasOf();
|
||||
}
|
||||
$aliasPackage = new AliasPackage($package, $alias['alias_normalized'], $alias['alias']);
|
||||
$aliasPackage->setRootPackageAlias(true);
|
||||
$packages[] = $aliasPackage;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
return new Pool($packages);
|
||||
}
|
||||
|
||||
|
@ -270,4 +285,18 @@ class RepositorySet
|
|||
|
||||
return $this->createPool($request, new NullIO());
|
||||
}
|
||||
|
||||
private function getRootAliasesPerPackage(array $aliases)
|
||||
{
|
||||
$normalizedAliases = array();
|
||||
|
||||
foreach ($aliases as $alias) {
|
||||
$normalizedAliases[$alias['package']][$alias['version']] = array(
|
||||
'alias' => $alias['alias'],
|
||||
'alias_normalized' => $alias['alias_normalized'],
|
||||
);
|
||||
}
|
||||
|
||||
return $normalizedAliases;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue