@@ -48,8 +48,14 @@ public function uninstall(Composer $composer, IOInterface $io): void
4848 public static function getSubscribedEvents (): array
4949 {
5050 return [
51- PackageEvents::PRE_PACKAGE_INSTALL => ['markClosedAsAbandoned ' , PHP_INT_MAX - 1000 ],
52- PackageEvents::PRE_PACKAGE_UPDATE => ['markClosedAsAbandoned ' , PHP_INT_MAX - 1000 ],
51+ PackageEvents::PRE_PACKAGE_INSTALL => [
52+ ['warmCache ' , PHP_INT_MAX - 500 ],
53+ ['markClosedAsAbandoned ' , PHP_INT_MAX - 1000 ],
54+ ],
55+ PackageEvents::PRE_PACKAGE_UPDATE => [
56+ ['warmCache ' , PHP_INT_MAX - 500 ],
57+ ['markClosedAsAbandoned ' , PHP_INT_MAX - 1000 ],
58+ ],
5359
5460 ScriptEvents::POST_INSTALL_CMD => ['markClosedLockedPackagesIfNotAlready ' , PHP_INT_MAX - 1000 ],
5561 ScriptEvents::POST_UPDATE_CMD => ['markClosedLockedPackagesIfNotAlready ' , PHP_INT_MAX - 1000 ],
@@ -58,6 +64,22 @@ public static function getSubscribedEvents(): array
5864 ];
5965 }
6066
67+ public function warmCache (PackageEvent $ event ): void
68+ {
69+ $ packages = array_map (
70+ static fn ($ operation ) => match (true ) {
71+ $ operation instanceof InstallOperation => $ operation ->getPackage (),
72+ $ operation instanceof UpdateOperation => $ operation ->getTargetPackage (),
73+ default => null ,
74+ },
75+ $ event ->getOperations (),
76+ );
77+ $ packages = array_filter ($ packages , static fn ($ package ) => $ package instanceof CompletePackageInterface);
78+ $ packages = array_filter ($ packages , static fn ($ package ) => ! $ package ->isAbandoned ());
79+
80+ $ this ->markClosedAsAbandoned ->warmCache (...$ packages );
81+ }
82+
6183 public function markClosedAsAbandoned (PackageEvent $ event ): void
6284 {
6385 $ operation = $ event ->getOperation ();
@@ -95,6 +117,8 @@ public function markClosedLockedPackagesIfNotAlready(ScriptEvent $event): void
95117 fn ($ package ) => ! in_array ($ package ->getPrettyName (), $ this ->marked , true ),
96118 );
97119
120+ $ this ->markClosedAsAbandoned ->warmCache (...$ packages );
121+
98122 foreach ($ packages as $ package ) {
99123 $ this ->marked [] = $ package ->getPrettyName ();
100124 $ this ->markClosedAsAbandoned ->__invoke ($ package );
0 commit comments