55use Exception ;
66use Modulus \Support \Filesystem ;
77use AtlantisPHP \Console \Application ;
8+ use Modulus \Framework \Application as App ;
89
910class ModulusCLI
1011{
@@ -66,7 +67,15 @@ public static function fails(Exception $e) : void
6667 */
6768 public static function boot () : object
6869 {
69- return new Application ('modulusPHP Developer Environment ' , (new ModulusCLI )->getVersion ());
70+ ModulusCLI::$ appdir = config ('app.dir ' );
71+ ModulusCLI::$ approot = config ('app.root ' );
72+
73+ $ app = new Application ('Modulus Craftsman ' , (new ModulusCLI )->getVersion ());
74+ $ app ->load (ModulusCLI::config ());
75+
76+ Self::autoload_plugins (true , $ app );
77+
78+ return $ app ;
7079 }
7180
7281 /**
@@ -76,15 +85,40 @@ public static function boot() : object
7685 */
7786 public function getVersion ()
7887 {
79- if (file_exists ('composer.json ' )) {
80- $ composer = json_decode (file_get_contents ('composer.json ' , true ));
88+ $ composerJson = config ('app.dir ' ) . 'composer.json ' ;
89+
90+ if (file_exists ($ composerJson )) {
91+ $ composer = json_decode (file_get_contents ($ composerJson , true ));
92+
8193 $ version = isset ($ composer ->version ) ? $ composer ->version : '1 ' ;
8294 $ require = isset ($ composer ->require ) ? (array )$ composer ->require : false ;
8395
84- if (!$ require ) return "{$ version } (1) " ;
85- if (isset ($ require ['modulusphp/framework ' ])) return $ version . " ( {$ require ['modulusphp/framework ' ]}) " ;
96+ if (!is_array ($ require )) return "{$ version } (1) " ;
97+
98+ if (isset ($ require ['modulusphp/framework ' ])) {
99+ return $ version . " ( {$ require ['modulusphp/framework ' ]}) " ;
100+ } else {
101+ return "{$ version } (1) " ;
102+ }
86103 }
87104
88105 return '1 ' ;
89106 }
90- }
107+
108+ /**
109+ * autoload_plugins
110+ *
111+ * @param bool $isConsole
112+ * @return void
113+ */
114+ public static function autoload_plugins (bool $ isConsole , $ craftsman )
115+ {
116+ $ plugins = config ('app.plugins ' );
117+
118+ if (env ('DEV_AUTOLOAD_PLUGINS ' ) == true ) {
119+ foreach ($ plugins as $ plugin => $ class ) {
120+ $ class ::console ((object )array_merge (App::prototype ($ isConsole ), ['craftsman ' => $ craftsman ]));
121+ }
122+ }
123+ }
124+ }
0 commit comments