5
5
use Composer \Composer ;
6
6
use Composer \IO \IOInterface ;
7
7
use Composer \Plugin \PluginInterface ;
8
- use Composer \Installer \ PackageEvent ;
9
- use Composer \Installer \ PackageEvents ;
8
+ use Composer \Script \ Event ;
9
+ use Composer \Script \ ScriptEvents ;
10
10
use Composer \EventDispatcher \EventSubscriberInterface ;
11
11
use Symfony \Component \Yaml \Yaml ;
12
+ use Symfony \Component \Finder \Finder ;
12
13
13
14
// Explicitly require ExtenderManager here.
14
15
// When this package is uninstalled, ExtenderManager needs to be available any
@@ -44,18 +45,17 @@ public function activate(Composer $composer, IOInterface $io)
44
45
*/
45
46
public static function getSubscribedEvents ()
46
47
{
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
+ ];
52
52
}
53
53
54
54
/**
55
- * @param PackageEvent $event
55
+ * @param Event $event
56
56
* @throws \Exception
57
57
*/
58
- public function processPackages (PackageEvent $ event )
58
+ public function processPackages (Event $ event )
59
59
{
60
60
$ extenderManager = new ExtenderManager ();
61
61
@@ -65,22 +65,22 @@ public function processPackages(PackageEvent $event)
65
65
$ localRepository = $ repositoryManager ->getLocalRepository ();
66
66
67
67
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
+ }
72
73
}
73
- }
74
74
}
75
75
76
76
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
+ }
80
80
}
81
81
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 ();
84
84
}
85
85
86
86
$ configFile = $ directory . '/extend.console.config.yml ' ;
@@ -127,5 +127,27 @@ public function processPackages(PackageEvent $event)
127
127
);
128
128
$ this ->io ->write ('<info>Creating services cache file: </info> ' . $ servicesUninstallFile );
129
129
}
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
+ }
130
152
}
131
153
}
0 commit comments