1
0
Fork 0

Fix update command by using remove+install (and for now ignoring uninstalls of non-existing packages)

pull/126/head
Jordi Boggiano 2011-11-21 18:18:06 +01:00
parent bf7ad0ac9f
commit 68512714f4
2 changed files with 9 additions and 8 deletions

View File

@ -91,19 +91,18 @@ EOT
foreach ($installedPackages as $package) {
if ($package->getName() === $link->getTarget()) {
$request->update($link->getTarget(), $link->getConstraint());
continue 2;
$constraint = new VersionConstraint('=', $package->getVersion());
if ($link->getConstraint()->matches($constraint)) {
continue 2;
}
// TODO this should just update to the exact version (once constraints are available on update, see #125)
$request->remove($package->getName(), $constraint);
break;
}
}
$request->install($link->getTarget(), $link->getConstraint());
}
foreach ($localRepo->getPackages() as $package) {
if (!in_array($package->getName(), $listedPackages)) {
$request->remove($package->getName());
}
}
} elseif ($composer->getLocker()->isLocked()) {
$output->writeln('> Found lockfile. Reading.');

View File

@ -109,6 +109,8 @@ class LibraryInstaller implements InstallerInterface
public function uninstall(PackageInterface $package)
{
if (!$this->repository->hasPackage($package)) {
// TODO throw exception again here, when update is fixed and we don't have to remove+install (see #125)
return;
throw new \InvalidArgumentException('Package is not installed: '.$package);
}