| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 | #!/usr/bin/env php<?phpuse Webman\Config;use Webman\Console\Command;use Webman\Console\Util;use support\Container;require_once __DIR__ . '/vendor/autoload.php';if (!in_array($argv[1] ?? '', ['start', 'restart', 'stop', 'status', 'reload', 'connections'])) {    require_once __DIR__ . '/support/bootstrap.php';} else {    if (class_exists('Support\App')) {        Support\App::loadAllConfig(['route']);    } else {        Config::reload(config_path(), ['route', 'container']);    }}$cli = new Command();$cli->setName('webman cli');$cli->installInternalCommands();if (is_dir($command_path = Util::guessPath(app_path(), '/command', true))) {    $cli->installCommands($command_path);}foreach (config('plugin', []) as $firm => $projects) {    if (isset($projects['app'])) {        foreach (['', '/app'] as $app) {            if ($command_str = Util::guessPath(base_path() . "/plugin/$firm{$app}", 'command')) {                $command_path = base_path() . "/plugin/$firm{$app}/$command_str";                $cli->installCommands($command_path, "plugin\\$firm" . str_replace('/', '\\', $app) . "\\$command_str");            }        }    }    foreach ($projects as $name => $project) {        if (!is_array($project)) {            continue;        }        foreach ($project['command'] ?? [] as $class_name) {            $reflection = new \ReflectionClass($class_name);            if ($reflection->isAbstract()) {                continue;            }            $properties = $reflection->getStaticProperties();            $name = $properties['defaultName'];            if (!$name) {                throw new RuntimeException("Command {$class_name} has no defaultName");            }            $description = $properties['defaultDescription'] ?? '';            $command = Container::get($class_name);            $command->setName($name)->setDescription($description);            $cli->add($command);        }    }}$cli->run();
 |