55use Composer \Composer ;
66use Composer \IO \IOInterface ;
77use Composer \Plugin \PluginInterface ;
8- use Composer \Installer \ PackageEvent ;
9- use Composer \Installer \ PackageEvents ;
8+ use Composer \Script \ Event ;
9+ use Composer \Script \ ScriptEvents ;
1010use Composer \EventDispatcher \EventSubscriberInterface ;
1111use Symfony \Component \Yaml \Yaml ;
12+ use Symfony \Component \Finder \Finder ;
1213
1314// Explicitly require ExtenderManager here.
1415// When this package is uninstalled, ExtenderManager needs to be available any
@@ -44,18 +45,17 @@ public function activate(Composer $composer, IOInterface $io)
4445 */
4546 public static function getSubscribedEvents ()
4647 {
47- return array (
48- PackageEvents::POST_PACKAGE_INSTALL => "processPackages " ,
49- PackageEvents::POST_PACKAGE_UPDATE => "processPackages " ,
50- PackageEvents::POST_PACKAGE_UNINSTALL => "processPackages " ,
51- );
48+ return [
49+ ScriptEvents::POST_INSTALL_CMD => "processPackages " ,
50+ ScriptEvents::POST_UPDATE_CMD => "processPackages " ,
51+ ];
5252 }
5353
5454 /**
55- * @param PackageEvent $event
55+ * @param Event $event
5656 * @throws \Exception
5757 */
58- public function processPackages (PackageEvent $ event )
58+ public function processPackages (Event $ event )
5959 {
6060 $ extenderManager = new ExtenderManager ();
6161
@@ -65,22 +65,22 @@ public function processPackages(PackageEvent $event)
6565 $ localRepository = $ repositoryManager ->getLocalRepository ();
6666
6767 foreach ($ localRepository ->getPackages () as $ package ) {
68- if ($ installationManager ->isPackageInstalled ($ localRepository , $ package )) {
69- if ($ package ->getType () === 'drupal-console-library ' ) {
70- $ extenderManager ->addServicesFile ($ installationManager ->getInstallPath ($ package ) . '/console.services.yml ' );
71- $ extenderManager ->addConfigFile ($ installationManager ->getInstallPath ($ package ) . '/console.config.yml ' );
68+ if ($ installationManager ->isPackageInstalled ($ localRepository , $ package )) {
69+ if ($ package ->getType () === 'drupal-console-library ' ) {
70+ $ extenderManager ->addServicesFile ($ installationManager ->getInstallPath ($ package ) . '/console.services.yml ' );
71+ $ extenderManager ->addConfigFile ($ installationManager ->getInstallPath ($ package ) . '/console.config.yml ' );
72+ }
7273 }
73- }
7474 }
7575
7676 if ($ consolePackage = $ localRepository ->findPackage ('drupal/console ' , '* ' )) {
77- if ($ localRepository ->hasPackage ($ consolePackage )) {
78- $ directory = $ installationManager ->getInstallPath ($ consolePackage );
79- }
77+ if ($ localRepository ->hasPackage ($ consolePackage )) {
78+ $ directory = $ installationManager ->getInstallPath ($ consolePackage );
79+ }
8080 }
8181 if (empty ($ directory )) {
82- // cwd should be the project root. This is the same logic Symfony uses.
83- $ directory = getcwd ();
82+ // cwd should be the project root. This is the same logic Symfony uses.
83+ $ directory = getcwd ();
8484 }
8585
8686 $ configFile = $ directory . '/extend.console.config.yml ' ;
@@ -127,5 +127,27 @@ public function processPackages(PackageEvent $event)
127127 );
128128 $ this ->io ->write ('<info>Creating services cache file: </info> ' . $ servicesUninstallFile );
129129 }
130+
131+ $ this ->removeCacheFiles ();
132+ }
133+
134+ protected function removeCacheFiles ()
135+ {
136+ $ finder = new Finder ();
137+ $ finder ->files ()
138+ ->in (getcwd ().'/console/cache/ ' )
139+ ->ignoreUnreadableDirs ();
140+
141+ foreach ($ finder as $ file ) {
142+ unlink ($ file ->getPathName ());
143+ }
144+
145+ $ finder ->directories ()
146+ ->in (getcwd ().'/console/cache/ ' )
147+ ->ignoreUnreadableDirs ();
148+
149+ foreach ($ finder as $ directory ) {
150+ rmdir ($ directory );
151+ }
130152 }
131153}
0 commit comments