diff --git a/app/Console/Commands/AppInstallCommand.php b/app/Console/Commands/AppInstallCommand.php new file mode 100644 index 00000000..6f5a0cfe --- /dev/null +++ b/app/Console/Commands/AppInstallCommand.php @@ -0,0 +1,76 @@ + + */ +class AppInstallCommand extends Command +{ + /** + * The name and signature of the console command. + * + * @var string + */ + protected $signature = 'app:install'; + + /** + * The console command description. + * + * @var string + */ + protected $description = 'Installs the application'; + + /** + * The events instance. + * + * @var \Illuminate\Contracts\Events\Dispatcher + */ + protected $events; + + /** + * Create a new command instance. + * + * @return void + */ + public function __construct(Dispatcher $events) + { + $this->events = $events; + + parent::__construct(); + } + + /** + * Execute the console command. + * + * @return mixed + */ + public function handle() + { + $this->events->fire('command.installing', $this); + $this->events->fire('command.generatekey', $this); + $this->events->fire('command.cacheconfig', $this); + $this->events->fire('command.cacheroutes', $this); + $this->events->fire('command.publishvendors', $this); + $this->events->fire('command.runmigrations', $this); + $this->events->fire('command.runseeding', $this); + $this->events->fire('command.updatecache', $this); + $this->events->fire('command.linkstorage', $this); + $this->events->fire('command.extrastuff', $this); + $this->events->fire('command.installed', $this); + } +} diff --git a/app/Console/Commands/AppResetCommand.php b/app/Console/Commands/AppResetCommand.php new file mode 100644 index 00000000..3add76aa --- /dev/null +++ b/app/Console/Commands/AppResetCommand.php @@ -0,0 +1,76 @@ + + */ +class AppResetCommand extends Command +{ + /** + * The name and signature of the console command. + * + * @var string + */ + protected $signature = 'app:reset'; + + /** + * The console command description. + * + * @var string + */ + protected $description = 'Resets and installs the application'; + + /** + * The events instance. + * + * @var \Illuminate\Contracts\Events\Dispatcher + */ + protected $events; + + /** + * Create a new command instance. + * + * @return void + */ + public function __construct(Dispatcher $events) + { + $this->events = $events; + + parent::__construct(); + } + + /** + * Execute the console command. + * + * @return mixed + */ + public function handle() + { + $this->events->fire('command.resetting', $this); + $this->events->fire('command.generatekey', $this); + $this->events->fire('command.cacheconfig', $this); + $this->events->fire('command.cacheroutes', $this); + $this->events->fire('command.publishvendors', $this); + $this->events->fire('command.resetmigrations', $this); + $this->events->fire('command.runmigrations', $this); + $this->events->fire('command.runseeding', $this); + $this->events->fire('command.updatecache', $this); + $this->events->fire('command.extrastuff', $this); + $this->events->fire('command.reset', $this); + } +} diff --git a/app/Console/Commands/AppUpdateCommand.php b/app/Console/Commands/AppUpdateCommand.php new file mode 100644 index 00000000..1aa4bd97 --- /dev/null +++ b/app/Console/Commands/AppUpdateCommand.php @@ -0,0 +1,73 @@ + + */ +class AppUpdateCommand extends Command +{ + /** + * The name and signature of the console command. + * + * @var string + */ + protected $signature = 'app:update'; + + /** + * The console command description. + * + * @var string + */ + protected $description = 'Updates the application'; + + /** + * The events instance. + * + * @var \Illuminate\Contracts\Events\Dispatcher + */ + protected $events; + + /** + * Create a new command instance. + * + * @return void + */ + public function __construct(Dispatcher $events) + { + $this->events = $events; + + parent::__construct(); + } + + /** + * Execute the console command. + * + * @return mixed + */ + public function handle() + { + $this->events->fire('command.updating', $this); + $this->events->fire('command.cacheconfig', $this); + $this->events->fire('command.cacheroutes', $this); + $this->events->fire('command.publishvendors', $this); + $this->events->fire('command.runmigrations', $this); + $this->events->fire('command.updatecache', $this); + $this->events->fire('command.extrastuff', $this); + $this->events->fire('command.updated', $this); + } +} diff --git a/app/Console/Kernel.php b/app/Console/Kernel.php index 9a203840..b3d16aac 100644 --- a/app/Console/Kernel.php +++ b/app/Console/Kernel.php @@ -11,6 +11,9 @@ namespace CachetHQ\Cachet\Console; +use CachetHQ\Cachet\Console\Commands\AppInstallCommand; +use CachetHQ\Cachet\Console\Commands\AppResetCommand; +use CachetHQ\Cachet\Console\Commands\AppUpdateCommand; use CachetHQ\Cachet\Console\Commands\BeaconCommand; use CachetHQ\Cachet\Console\Commands\DemoMetricPointSeederCommand; use CachetHQ\Cachet\Console\Commands\DemoSeederCommand; @@ -34,6 +37,9 @@ class Kernel extends ConsoleKernel * @var array */ protected $commands = [ + AppInstallCommand::class, + AppResetCommand::class, + AppUpdateCommand::class, BeaconCommand::class, DemoMetricPointSeederCommand::class, DemoSeederCommand::class, diff --git a/app/Subscribers/CommandSubscriber.php b/app/Subscribers/CommandSubscriber.php index 7b7acb6f..bc388df0 100644 --- a/app/Subscribers/CommandSubscriber.php +++ b/app/Subscribers/CommandSubscriber.php @@ -69,6 +69,15 @@ class CommandSubscriber $events->listen('command.installing', __CLASS__.'@fireInstallingCommand', 5); $events->listen('command.updating', __CLASS__.'@fireUpdatingCommand', 5); $events->listen('command.resetting', __CLASS__.'@fireResettingCommand', 5); + $events->listen('command.generatekey', __CLASS__.'@onGenerateKey'); + $events->listen('command.cacheconfig', __CLASS__.'@onCacheConfig'); + $events->listen('command.cacheroutes', __CLASS__.'@onCacheRoutes'); + $events->listen('command.publishvendors', __CLASS__.'@onPublishVendors'); + $events->listen('command.resetmigrations', __CLASS__.'@onResetMigrations'); + $events->listen('command.runmigrations', __CLASS__.'@onRunMigrations'); + $events->listen('command.runseeding', __CLASS__.'@onRunSeeding'); + $events->listen('command.linkstorage', __CLASS__.'@onLinkStorage'); + $events->listen('command.updatecache', __CLASS__.'@onUpdateCache'); } /** @@ -158,4 +167,116 @@ class CommandSubscriber $command->line('Backup completed!'); } + + /** + * Handle a command.generatekey event. + * + * @param \Illuminate\Console\Command $command + * + * @return void + */ + public function onGenerateKey(Command $command) + { + $command->call('key:generate'); + } + + /** + * Handle a command.cacheconfig event. + * + * @param \Illuminate\Console\Command $command + * + * @return void + */ + public function onCacheConfig(Command $command) + { + $command->call('config:cache'); + } + + /** + * Handle a command.cacheroutes event. + * + * @param \Illuminate\Console\Command $command + * + * @return void + */ + public function onCacheRoutes(Command $command) + { + $command->call('route:cache'); + } + + /** + * Handle a command.publishvendors event. + * + * @param \Illuminate\Console\Command $command + * + * @return void + */ + public function onPublishVendors(Command $command) + { + $command->call('vendor:publish'); + } + + /** + * Handle a command.resetmigrations event. + * + * @param \Illuminate\Console\Command $command + * + * @return void + */ + public function onResetMigrations(Command $command) + { + $command->call('migrate:reset', ['--force' => true]); + } + + /** + * Handle a command.runmigrations event. + * + * @param \Illuminate\Console\Command $command + * + * @return void + */ + public function onRunMigrations(Command $command) + { + $command->call('migrate', ['--force' => true]); + } + + /** + * Handle a command.runseeding event. + * + * @param \Illuminate\Console\Command $command + * + * @return void + */ + public function onRunSeeding(Command $command) + { + $command->call('db:seed', ['--force' => true]); + } + + /** + * Handle a command.linkstorage event. + * + * @param \Illuminate\Console\Command $command + * + * @return void + */ + public function onLinkStorage(Command $command) + { + if ($command->getApplication()->has('storage:link')) { + $command->call('storage:link'); + } + } + + /** + * Handle a command.updatecache event. + * + * @param \Illuminate\Console\Command $command + * + * @return void + */ + public function onUpdateCache(Command $command) + { + $command->line('Clearing cache...'); + $command->call('cache:clear'); + $command->info('Cache cleared!'); + } } diff --git a/composer.json b/composer.json index 60e88e1a..856e27d6 100644 --- a/composer.json +++ b/composer.json @@ -40,7 +40,6 @@ "doctrine/dbal": "2.5.13", "fideloper/proxy": "^3.1", "graham-campbell/binput": "^3.5", - "graham-campbell/core": "^5.1", "graham-campbell/exceptions": "^9.1", "graham-campbell/markdown": "^7.1", "guzzlehttp/guzzle": "^6.2.1", diff --git a/config/app.php b/config/app.php index 20fa2a0e..83ed729a 100644 --- a/config/app.php +++ b/config/app.php @@ -182,7 +182,6 @@ return [ env('APP_DEBUG') ? Barryvdh\Debugbar\ServiceProvider::class : null, Fideloper\Proxy\TrustedProxyServiceProvider::class, GrahamCampbell\Binput\BinputServiceProvider::class, - GrahamCampbell\Core\CoreServiceProvider::class, GrahamCampbell\Exceptions\ExceptionsServiceProvider::class, GrahamCampbell\Markdown\MarkdownServiceProvider::class, GrahamCampbell\Security\SecurityServiceProvider::class,