Commit f45fef9c authored by alexpott's avatar alexpott

Issue #3088403 by Mile23, Mixologic: Defensive coding: Vendor hardening plugin...

Issue #3088403 by Mile23, Mixologic: Defensive coding: Vendor hardening plugin sometimes receives AliasPackage

(cherry picked from commit 3072f841)
parent d914e013
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
use Composer\Installer\PackageEvent; use Composer\Installer\PackageEvent;
use Composer\Installer\PackageEvents; use Composer\Installer\PackageEvents;
use Composer\IO\IOInterface; use Composer\IO\IOInterface;
use Composer\Package\CompletePackage; use Composer\Package\BasePackage;
use Composer\Plugin\PluginInterface; use Composer\Plugin\PluginInterface;
use Composer\Script\Event; use Composer\Script\Event;
use Composer\Script\ScriptEvents; use Composer\Script\ScriptEvents;
...@@ -150,13 +150,21 @@ public function onPostPackageUpdate(PackageEvent $event) { ...@@ -150,13 +150,21 @@ public function onPostPackageUpdate(PackageEvent $event) {
* Where the configured bin files are in the directories to be removed, remove * Where the configured bin files are in the directories to be removed, remove
* the bin config. * the bin config.
* *
* @param \Composer\Package\CompletePackage $package * @param \Composer\Package\BasePackage $package
* The package we're cleaning up. * The package we're cleaning up.
*/ */
protected function removeBinBeforeCleanup(CompletePackage $package) { protected function removeBinBeforeCleanup(BasePackage $package) {
// Only do this if there are binaries and cleanup paths. // We can process AliasPackage and Package objects, and they share the
// BasePackage parent class. However, since there is no common interface for
// these package types that allow for the setBinaries() method, and since
// BasePackage does not include the setBinaries() method, we have to make
// sure we're processing a class with a setBinaries() method.
if (!method_exists($package, 'setBinaries')) {
return;
}
$binaries = $package->getBinaries(); $binaries = $package->getBinaries();
$clean_paths = $this->config->getPathsForPackage($package->getName()); $clean_paths = $this->config->getPathsForPackage($package->getName());
// Only do this if there are binaries and cleanup paths.
if (!$binaries || !$clean_paths) { if (!$binaries || !$clean_paths) {
return; return;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment