Fix update command by using remove+install (and for now ignoring uninstalls of non-existing packages)
parent
bf7ad0ac9f
commit
68512714f4
|
@ -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.');
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue