6 declare(strict_types=1);
10 use Composer\Autoload\ClassLoader;
11 use Composer\Composer;
12 use Composer\DependencyResolver\Operation\InstallOperation;
13 use Composer\DependencyResolver\Operation\UpdateOperation;
14 use Composer\EventDispatcher\EventSubscriberInterface;
15 use Composer\Installer\PackageEvent;
16 use Composer\IO\IOInterface;
17 use Composer\Plugin\PluginInterface;
23 class Plugin implements PluginInterface, EventSubscriberInterface
37 private $moduleDeployment;
39 public function activate(Composer $composer, IOInterface $io)
41 $this->composer = $composer;
48 'pre-install-cmd' =>
'initModuleDeployment',
49 'pre-update-cmd' =>
'initModuleDeployment',
50 'post-package-install' =>
'onPackageChange',
51 'post-package-update' =>
'onPackageChange',
59 define(
'BP', getcwd());
64 }
catch (\Throwable $e) {
73 $operation = $event->getOperation();
74 if ($operation instanceof InstallOperation) {
75 $package = $operation->getPackage();
76 }
elseif ($operation instanceof UpdateOperation) {
77 $package = $operation->getTargetPackage();
82 $this->getModuleDeployment()->deploy($package);
87 if (!isset($this->moduleDeployment)) {
90 return $this->moduleDeployment;
elseif(isset( $params[ 'redirect_parent']))
onPackageChange(PackageEvent $event)
static registerAutoloader(AutoloaderInterface $newAutoloader)
static getSubscribedEvents()
activate(Composer $composer, IOInterface $io)