Add extension rollback command

This commit is contained in:
Clark Winkelmann 2018-02-09 18:32:44 +01:00
parent c3d034d2fa
commit d47aed59c6
3 changed files with 78 additions and 1 deletions

View File

@ -14,6 +14,7 @@ namespace Flarum\Console;
use Flarum\Console\Event\Configuring; use Flarum\Console\Event\Configuring;
use Flarum\Database\Console\GenerateMigrationCommand; use Flarum\Database\Console\GenerateMigrationCommand;
use Flarum\Database\Console\MigrateCommand; use Flarum\Database\Console\MigrateCommand;
use Flarum\Database\Console\RollbackCommand;
use Flarum\Foundation\Application; use Flarum\Foundation\Application;
use Flarum\Foundation\Console\CacheClearCommand; use Flarum\Foundation\Console\CacheClearCommand;
use Flarum\Foundation\Console\InfoCommand; use Flarum\Foundation\Console\InfoCommand;
@ -58,6 +59,7 @@ class Server
$commands = [ $commands = [
InstallCommand::class, InstallCommand::class,
MigrateCommand::class, MigrateCommand::class,
RollbackCommand::class,
GenerateMigrationCommand::class, GenerateMigrationCommand::class,
]; ];

View File

@ -0,0 +1,74 @@
<?php
/*
* This file is part of Flarum.
*
* (c) Toby Zerner <toby.zerner@gmail.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Flarum\Database\Console;
use Flarum\Console\AbstractCommand;
use Flarum\Extension\ExtensionManager;
use Symfony\Component\Console\Input\InputArgument;
class RollbackCommand extends AbstractCommand
{
/**
* @var ExtensionManager
*/
protected $manager;
/**
* @param ExtensionManager $manager
*/
public function __construct(ExtensionManager $manager)
{
$this->manager = $manager;
parent::__construct();
}
/**
* {@inheritdoc}
*/
protected function configure()
{
$this
->setName('migrate:rollback')
->setDescription('Run rollback migrations for an extension')
->addArgument(
'extension',
InputArgument::REQUIRED,
'The name of the extension.'
);
}
/**
* {@inheritdoc}
*/
protected function fire()
{
$extensionName = $this->input->getArgument('extension');
$extension = $this->manager->getExtension($extensionName);
if (!$extension) {
$this->info('Could not find extension ' . $extensionName);
return;
}
$this->info('Rolling back extension: ' . $extensionName);
$notes = $this->manager->migrateDown($extension);
foreach ($notes as $note) {
$this->info($note);
}
$this->info('DONE.');
}
}

View File

@ -247,10 +247,11 @@ class ExtensionManager
* Runs the database migrations to reset the database to its old state. * Runs the database migrations to reset the database to its old state.
* *
* @param Extension $extension * @param Extension $extension
* @return array Notes from the migrator.
*/ */
public function migrateDown(Extension $extension) public function migrateDown(Extension $extension)
{ {
$this->migrate($extension, false); return $this->migrate($extension, false);
} }
/** /**