protected function VendorHardeningPlugin::removeBinBeforeCleanup in Drupal 9
Same name and namespace in other branches
- 8 composer/Plugin/VendorHardening/VendorHardeningPlugin.php \Drupal\Composer\Plugin\VendorHardening\VendorHardeningPlugin::removeBinBeforeCleanup()
Remove bin config for packages that would have the bin file removed.
Where the configured bin files are in the directories to be removed, remove the bin config.
Parameters
\Composer\Package\BasePackage $package: The package we're cleaning up.
2 calls to VendorHardeningPlugin::removeBinBeforeCleanup()
- VendorHardeningPlugin::onPrePackageInstall in composer/
Plugin/ VendorHardening/ VendorHardeningPlugin.php - PRE_PACKAGE_INSTALL event handler.
- VendorHardeningPlugin::onPrePackageUpdate in composer/
Plugin/ VendorHardening/ VendorHardeningPlugin.php - PRE_PACKAGE_UPDATE event handler.
File
- composer/
Plugin/ VendorHardening/ VendorHardeningPlugin.php, line 165
Class
- VendorHardeningPlugin
- A Composer plugin to clean out your project's vendor directory.
Namespace
Drupal\Composer\Plugin\VendorHardeningCode
protected function removeBinBeforeCleanup(BasePackage $package) {
// 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();
$clean_paths = $this->config
->getPathsForPackage($package
->getName());
// Only do this if there are binaries and cleanup paths.
if (!$binaries || !$clean_paths) {
return;
}
if ($unset_these_binaries = $this
->findBinOverlap($binaries, $clean_paths)) {
$this->io
->writeError(sprintf('%sModifying bin config for <info>%s</info> which overlaps with cleanup directories.', str_repeat(' ', 4), $package
->getName()), TRUE, IOInterface::VERBOSE);
$modified_binaries = [];
foreach ($binaries as $binary) {
if (!in_array($binary, $unset_these_binaries)) {
$modified_binaries[] = $binary;
}
}
$package
->setBinaries($modified_binaries);
}
}