@@ -16,6 +16,10 @@ trait PublishesFiles
1616{
1717 use HasConsole;
1818
19+ private array $ publishedFiles = [];
20+
21+ private array $ publishedClasses = [];
22+
1923 /**
2024 * @param Closure(string $source, string $destination): void|null $callback
2125 */
@@ -51,13 +55,28 @@ public function publish(
5155
5256 $ this ->updateClass ($ destination );
5357
58+ $ this ->publishedFiles [] = $ destination ;
59+
5460 if ($ callback !== null ) {
5561 $ callback ($ source , $ destination );
5662 }
5763
5864 $ this ->success ("{$ destination } created " );
5965 }
6066
67+ public function publishImports (): void
68+ {
69+ foreach ($ this ->publishedFiles as $ file ) {
70+ $ contents = str (file_get_contents ($ file ));
71+
72+ foreach ($ this ->publishedClasses as $ old => $ new ) {
73+ $ contents = $ contents ->replace ("use {$ old }; " , "use {$ new }; " );
74+ }
75+
76+ file_put_contents ($ file , $ contents );
77+ }
78+ }
79+
6180 private function updateClass (string $ destination ): void
6281 {
6382 try {
@@ -75,9 +94,13 @@ private function updateClass(string $destination): void
7594 ->implode ('\\' )
7695 ->toString ();
7796
97+ $ oldClassName = $ class ->getClassName ();
98+
7899 $ class
79100 ->setNamespace ($ namespace )
80101 ->removeClassAttribute (DoNotDiscover::class)
81102 ->save ($ destination );
103+
104+ $ this ->publishedClasses [$ oldClassName ] = $ class ->getClassName ();
82105 }
83106}
0 commit comments