From 379033aae484b62fd9f7590cf766f48c0672f907 Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Wed, 6 Jan 2021 13:45:19 +0200 Subject: [PATCH] Further improve CLI commands --- bin/gpm | 15 +----- bin/grav | 20 +------ .../Console/Application/GpmApplication.php | 43 +++++++++++++++ .../Console/Application/GravApplication.php | 53 +++++++++++++++++++ system/src/Grav/Console/ConsoleTrait.php | 33 +++++++----- 5 files changed, 121 insertions(+), 43 deletions(-) create mode 100644 system/src/Grav/Console/Application/GpmApplication.php create mode 100644 system/src/Grav/Console/Application/GravApplication.php diff --git a/bin/gpm b/bin/gpm index bfaf3581d..f65190998 100755 --- a/bin/gpm +++ b/bin/gpm @@ -2,8 +2,8 @@ $autoload)); -$app = new Application('Grav Package Manager', GRAV_VERSION); -$app->addCommands(array( - new \Grav\Console\Gpm\IndexCommand(), - new \Grav\Console\Gpm\VersionCommand(), - new \Grav\Console\Gpm\InfoCommand(), - new \Grav\Console\Gpm\InstallCommand(), - new \Grav\Console\Gpm\UninstallCommand(), - new \Grav\Console\Gpm\UpdateCommand(), - new \Grav\Console\Gpm\SelfupgradeCommand(), - new \Grav\Console\Gpm\DirectInstallCommand(), -)); - +$app = new GpmApplication('Grav Package Manager', GRAV_VERSION); $app->run(); diff --git a/bin/grav b/bin/grav index 5abd1b255..2e771b860 100755 --- a/bin/grav +++ b/bin/grav @@ -3,8 +3,7 @@ use Grav\Common\Composer; use Grav\Common\Grav; -use Grav\Console\Cli; -use Symfony\Component\Console\Application; +use Grav\Console\Application\GravApplication; \define('GRAV_CLI', true); \define('GRAV_REQUEST_TIME', microtime(true)); @@ -42,20 +41,5 @@ if (!file_exists(GRAV_ROOT . '/index.php')) { exit('FATAL: Must be run from ROOT directory of Grav!'); } -$app = new Application('Grav CLI Application', GRAV_VERSION); -$app->addCommands(array( - new Cli\InstallCommand(), - new Cli\ComposerCommand(), - new Cli\SandboxCommand(), - new Cli\CleanCommand(), - new Cli\ClearCacheCommand(), - new Cli\BackupCommand(), - new Cli\NewProjectCommand(), - new Cli\SchedulerCommand(), - new Cli\SecurityCommand(), - new Cli\LogViewerCommand(), - new Cli\YamlLinterCommand(), - new Cli\ServerCommand(), - new Cli\PageSystemValidatorCommand(), -)); +$app = new GravApplication('Grav CLI Application', GRAV_VERSION); $app->run(); diff --git a/system/src/Grav/Console/Application/GpmApplication.php b/system/src/Grav/Console/Application/GpmApplication.php new file mode 100644 index 000000000..fbaf468a8 --- /dev/null +++ b/system/src/Grav/Console/Application/GpmApplication.php @@ -0,0 +1,43 @@ +addCommands([ + new IndexCommand(), + new VersionCommand(), + new InfoCommand(), + new InstallCommand(), + new UninstallCommand(), + new UpdateCommand(), + new SelfupgradeCommand(), + new DirectInstallCommand(), + ]); + } +} diff --git a/system/src/Grav/Console/Application/GravApplication.php b/system/src/Grav/Console/Application/GravApplication.php new file mode 100644 index 000000000..73761e1a6 --- /dev/null +++ b/system/src/Grav/Console/Application/GravApplication.php @@ -0,0 +1,53 @@ +addCommands([ + new InstallCommand(), + new ComposerCommand(), + new SandboxCommand(), + new CleanCommand(), + new ClearCacheCommand(), + new BackupCommand(), + new NewProjectCommand(), + new SchedulerCommand(), + new SecurityCommand(), + new LogViewerCommand(), + new YamlLinterCommand(), + new ServerCommand(), + new PageSystemValidatorCommand(), + ]); + } +} diff --git a/system/src/Grav/Console/ConsoleTrait.php b/system/src/Grav/Console/ConsoleTrait.php index 1e4b4aa2b..150883234 100644 --- a/system/src/Grav/Console/ConsoleTrait.php +++ b/system/src/Grav/Console/ConsoleTrait.php @@ -19,6 +19,7 @@ use Grav\Console\Cli\ClearCacheCommand; use RocketTheme\Toolbox\Event\Event; use RocketTheme\Toolbox\File\YamlFile; use Symfony\Component\Console\Exception\InvalidArgumentException; +use Symfony\Component\Console\Exception\LogicException; use Symfony\Component\Console\Formatter\OutputFormatterStyle; use Symfony\Component\Console\Input\ArrayInput; use Symfony\Component\Console\Input\InputInterface; @@ -76,12 +77,16 @@ trait ConsoleTrait */ final protected function addEnvOption() { - return $this->addOption( - 'env', - 'e', - InputOption::VALUE_OPTIONAL, - 'Optional environment to trigger a specific configuration.' - ); + try { + return $this->addOption( + 'env', + 'e', + InputOption::VALUE_OPTIONAL, + 'Optional environment to trigger a specific configuration.' + ); + } catch (LogicException $e) { + return $this; + } } /** @@ -89,12 +94,16 @@ trait ConsoleTrait */ final protected function addLanguageOption() { - return $this->addOption( - 'language', - 'l', - InputOption::VALUE_OPTIONAL, - 'Optional language to be used (multi-language sites only).' - ); + try { + return $this->addOption( + 'language', + 'l', + InputOption::VALUE_OPTIONAL, + 'Optional language to be used (multi-language sites only).' + ); + } catch (LogicException $e) { + return $this; + } } final protected function setupGrav(): void