3
3
namespace Modular \Modular \Console ;
4
4
5
5
use Illuminate \Console \Command ;
6
+ use Illuminate \Filesystem \Filesystem ;
6
7
use Illuminate \Support \Str ;
7
8
use Modular \Modular \Console \InstallerTraits \ModuleExists ;
8
9
@@ -18,10 +19,17 @@ class MakeControllerCommand extends Command
18
19
19
20
protected string $ resourceName ;
20
21
22
+ protected Filesystem $ filesystem ;
23
+
24
+ public function __construct (Filesystem $ filesystem )
25
+ {
26
+ parent ::__construct ();
27
+ $ this ->filesystem = $ filesystem ;
28
+ }
29
+
21
30
public function handle (): int
22
31
{
23
- $ this ->moduleName = Str::studly ($ this ->argument ('moduleName ' ));
24
- $ this ->resourceName = Str::studly ($ this ->argument ('resourceName ' ));
32
+ $ this ->initializeNames ();
25
33
26
34
if (! $ this ->moduleExists ()) {
27
35
return self ::FAILURE ;
@@ -33,19 +41,53 @@ public function handle(): int
33
41
return self ::SUCCESS ;
34
42
}
35
43
44
+ private function initializeNames (): void
45
+ {
46
+ $ this ->moduleName = Str::studly ($ this ->argument ('moduleName ' ));
47
+ $ this ->resourceName = Str::studly ($ this ->argument ('resourceName ' ));
48
+ }
49
+
36
50
private function createModuleController (): void
37
51
{
38
- $ stub = file_get_contents (__DIR__ .'/../../stubs/module-stub/modules/Http/Controllers/ModuleController.stub ' );
52
+ $ stub = $ this ->getStubContent ();
53
+ $ replacements = $ this ->getReplacements ();
39
54
55
+ $ processedStub = $ this ->processStub ($ stub , $ replacements );
56
+ $ this ->saveStub ($ processedStub );
57
+ }
58
+
59
+ private function getStubContent (): string
60
+ {
61
+ return file_get_contents (__DIR__ .'/../../stubs/module-stub/modules/Http/Controllers/ModuleController.stub ' );
62
+ }
63
+
64
+ private function getReplacements (): array
65
+ {
40
66
$ resourceNameCamelCase = Str::camel ($ this ->resourceName );
41
67
42
- $ stub = str_replace ('{{ ModuleName }} ' , $ this ->moduleName , $ stub );
43
- $ stub = str_replace ('{{ ResourceName }} ' , $ this ->resourceName , $ stub );
44
- $ stub = str_replace ('{{ resourceName }} ' , $ resourceNameCamelCase , $ stub );
45
- $ stub = str_replace ('{{ resourceNameCamelPlural }} ' , Str::plural ($ resourceNameCamelCase ), $ stub );
68
+ return [
69
+ '{{ ModuleName }} ' => $ this ->moduleName ,
70
+ '{{ ResourceName }} ' => $ this ->resourceName ,
71
+ '{{ resourceName }} ' => $ resourceNameCamelCase ,
72
+ '{{ resourceNameCamelPlural }} ' => Str::plural ($ resourceNameCamelCase ),
73
+ ];
74
+ }
46
75
47
- $ path = base_path ("modules/ {$ this ->moduleName }/Http/Controllers/ {$ this ->resourceName }Controller.php " );
76
+ private function processStub (string $ stub , array $ replacements ): string
77
+ {
78
+ return str_replace (
79
+ array_keys ($ replacements ),
80
+ array_values ($ replacements ),
81
+ $ stub
82
+ );
83
+ }
84
+
85
+ private function saveStub (string $ processedStub ): void
86
+ {
87
+ $ directory = base_path ("modules/ {$ this ->moduleName }/Http/Controllers/ " );
88
+ $ this ->filesystem ->ensureDirectoryExists ($ directory );
48
89
49
- file_put_contents ($ path , $ stub );
90
+ $ path = $ directory ."{$ this ->resourceName }Controller.php " ;
91
+ file_put_contents ($ path , $ processedStub );
50
92
}
51
93
}
0 commit comments