Skip to content
This repository was archived by the owner on Jan 5, 2026. It is now read-only.

Commit 3682645

Browse files
committed
Feat: allow plugins to register commands
Also get the application version
1 parent 1744884 commit 3682645

1 file changed

Lines changed: 40 additions & 6 deletions

File tree

ModulusCLI.php

Lines changed: 40 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
use Exception;
66
use Modulus\Support\Filesystem;
77
use AtlantisPHP\Console\Application;
8+
use Modulus\Framework\Application as App;
89

910
class 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

Comments
 (0)