diff --git a/src/Composer/Command/RemoveCommand.php b/src/Composer/Command/RemoveCommand.php index ab1962f6b..d761930af 100644 --- a/src/Composer/Command/RemoveCommand.php +++ b/src/Composer/Command/RemoveCommand.php @@ -209,9 +209,9 @@ EOT 'require' => $rootPackage->getRequires(), 'require-dev' => $rootPackage->getDevRequires(), ); - foreach ($toRemove as $type => $packages) { - foreach ($packages as $package) { - unset($links[$type][$package]); + foreach ($toRemove as $type => $names) { + foreach ($names as $name) { + unset($links[$type][$name]); } } $rootPackage->setRequires($links['require']); @@ -266,6 +266,15 @@ EOT file_put_contents($jsonFile->getPath(), $composerBackup); } + if (!$dryRun) { + foreach ($packages as $package) { + if ($composer->getRepositoryManager()->getLocalRepository()->findPackages($package)) { + $io->writeError('Removal failed, '.$package.' is still present, it may be required by another package. See `composer why '.$package.'`.'); + return 2; + } + } + } + return $status; } }