diff --git a/app/Console/Commands/Overrides/SeedCommand.php b/app/Console/Commands/Overrides/SeedCommand.php index 4dbad13e7..5f050e340 100644 --- a/app/Console/Commands/Overrides/SeedCommand.php +++ b/app/Console/Commands/Overrides/SeedCommand.php @@ -13,12 +13,14 @@ class SeedCommand extends BaseSeedCommand * Block someone from running this seed command if they have not completed * the migration process. */ - public function handle(): int + public function handle() { if (!$this->hasCompletedMigrations()) { - return $this->showMigrationWarning(); + $this->showMigrationWarning(); + + return; } - return parent::handle(); + parent::handle(); } } diff --git a/app/Console/Commands/Overrides/UpCommand.php b/app/Console/Commands/Overrides/UpCommand.php index 0be543198..3001edcbe 100644 --- a/app/Console/Commands/Overrides/UpCommand.php +++ b/app/Console/Commands/Overrides/UpCommand.php @@ -13,12 +13,14 @@ class UpCommand extends BaseUpCommand * Block someone from running this up command if they have not completed * the migration process. */ - public function handle(): int + public function handle() { if (!$this->hasCompletedMigrations()) { - return $this->showMigrationWarning(); + $this->showMigrationWarning(); + + return; } - return parent::handle(); + parent::handle(); } } diff --git a/app/Console/Commands/UpgradeCommand.php b/app/Console/Commands/UpgradeCommand.php new file mode 100644 index 000000000..9ca38515d --- /dev/null +++ b/app/Console/Commands/UpgradeCommand.php @@ -0,0 +1,111 @@ +input->isInteractive()) { + if (!$this->confirm('Are you sure you want to run the upgrade process for your Panel?')) { + return; + } + } + + ini_set('output_buffering', 0); + $bar = $this->output->createProgressBar(8); + $bar->start(); + + $this->withProgress($bar, function () { + $this->line('$upgrader> php artisan down'); + $this->call('down'); + }); + + $this->withProgress($bar, function () { + $this->line('$upgrader> chmod -R 755 storage bootstrap/cache'); + $process = new Process(['chmod', '-R', '755', 'storage', 'bootstrap/cache']); + $process->run(function ($type, $buffer) { + $this->{$type === Process::ERR ? 'error' : 'line'}($buffer); + }); + }); + + $this->withProgress($bar, function () { + $command = ['composer', 'install', '--no-ansi']; + if (config('app.env') === 'production' && !config('app.debug')) { + $command[] = '--optimize-autoloader'; + $command[] = '--no-dev'; + } + + $this->line('$upgrader> ' . implode(' ', $command)); + $process = new Process($command); + $process->run(function ($type, $buffer) { + $this->line($buffer); + }); + }); + + /** @var \Illuminate\Foundation\Application $app */ + $app = require __DIR__ . '/../../../bootstrap/app.php'; + /** @var \Pterodactyl\Console\Kernel $kernel */ + $kernel = $app->make(Kernel::class); + $kernel->bootstrap(); + $this->setLaravel($app); + + $this->withProgress($bar, function () { + $this->line('$upgrader> php artisan view:clear'); + $this->call('view:clear'); + }); + + $this->withProgress($bar, function () { + $this->line('$upgrader> php artisan config:clear'); + $this->call('config:clear'); + }); + + $this->withProgress($bar, function () { + $this->line('$upgrader> php artisan migrate --seed --force'); + $this->call('migrate', ['--seed' => '', '--force' => '']); + }); + + $this->withProgress($bar, function () { + $this->line('$upgrader> php artisan queue:restart'); + $this->call('queue:restart'); + }); + + $this->withProgress($bar, function () { + $this->line('$upgrader> php artisan up'); + $this->call('up'); + }); + + $this->newLine(); + $this->info('Finished running upgrade.'); + } + + protected function withProgress(ProgressBar $bar, Closure $callback) + { + $bar->clear(); + $callback(); + $bar->advance(); + $bar->display(); + } +} diff --git a/app/Console/RequiresDatabaseMigrations.php b/app/Console/RequiresDatabaseMigrations.php index 479722b63..0a4ca4944 100644 --- a/app/Console/RequiresDatabaseMigrations.php +++ b/app/Console/RequiresDatabaseMigrations.php @@ -33,7 +33,7 @@ trait RequiresDatabaseMigrations * them to properly run the migrations rather than ignoring all of the other previous * errors... */ - protected function showMigrationWarning(): int + protected function showMigrationWarning() { $this->getOutput()->writeln(' | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | @@ -51,7 +51,5 @@ database state by running the command above. '); $this->getOutput()->error('You must correct the error above before continuing.'); - - return 1; } }