Fix project aliases being redownloaded since they had no version

main
Jordi Boggiano 12 years ago
parent 983de81b1d
commit 9da7fbbf37

@ -139,9 +139,13 @@ class Installer
} }
foreach ($aliases as $alias) { foreach ($aliases as $alias) {
foreach ($this->repositoryManager->findPackages($alias['package'], $alias['version']) as $package) { foreach ($this->repositoryManager->findPackages($alias['package'], $alias['version']) as $package) {
$package->setAlias($alias['alias_normalized']);
$package->setPrettyAlias($alias['alias']);
$package->getRepository()->addPackage(new AliasPackage($package, $alias['alias_normalized'], $alias['alias'])); $package->getRepository()->addPackage(new AliasPackage($package, $alias['alias_normalized'], $alias['alias']));
} }
foreach ($this->repositoryManager->getLocalRepository()->findPackages($alias['package'], $alias['version']) as $package) { foreach ($this->repositoryManager->getLocalRepository()->findPackages($alias['package'], $alias['version']) as $package) {
$package->setAlias($alias['alias_normalized']);
$package->setPrettyAlias($alias['alias']);
$this->repositoryManager->getLocalRepository()->addPackage(new AliasPackage($package, $alias['alias_normalized'], $alias['alias'])); $this->repositoryManager->getLocalRepository()->addPackage(new AliasPackage($package, $alias['alias_normalized'], $alias['alias']));
$this->repositoryManager->getLocalRepository()->removePackage($package); $this->repositoryManager->getLocalRepository()->removePackage($package);
} }

@ -102,9 +102,9 @@ class ArrayRepository implements RepositoryInterface
} }
} }
protected function createAliasPackage(PackageInterface $package) protected function createAliasPackage(PackageInterface $package, $alias = null, $prettyAlias = null)
{ {
return new AliasPackage($package, $package->getAlias(), $package->getPrettyAlias()); return new AliasPackage($package, $alias ?: $package->getAlias(), $prettyAlias ?: $package->getPrettyAlias());
} }
/** /**

@ -59,8 +59,11 @@ class FilesystemRepository extends ArrayRepository implements WritableRepository
// package was installed as alias, so we only add the alias // package was installed as alias, so we only add the alias
if ($this instanceof InstalledRepositoryInterface && !empty($packageData['installed-as-alias'])) { if ($this instanceof InstalledRepositoryInterface && !empty($packageData['installed-as-alias'])) {
$alias = $packageData['installed-as-alias'];
$package->setAlias($alias);
$package->setPrettyAlias($alias);
$package->setInstalledAsAlias(true); $package->setInstalledAsAlias(true);
$this->addPackage($this->createAliasPackage($package)); $this->addPackage($this->createAliasPackage($package, $alias, $alias));
} else { } else {
// only add regular package - if it's not an installed repo the alias will be created on the fly // only add regular package - if it's not an installed repo the alias will be created on the fly
$this->addPackage($package); $this->addPackage($package);
@ -78,7 +81,7 @@ class FilesystemRepository extends ArrayRepository implements WritableRepository
foreach ($this->getPackages() as $package) { foreach ($this->getPackages() as $package) {
$data = $dumper->dump($package); $data = $dumper->dump($package);
if ($this instanceof InstalledRepositoryInterface && $package->isInstalledAsAlias()) { if ($this instanceof InstalledRepositoryInterface && $package->isInstalledAsAlias()) {
$data['installed-as-alias'] = true; $data['installed-as-alias'] = $package->getAlias();
} }
$packages[] = $data; $packages[] = $data;
} }

Loading…
Cancel
Save