1
0
mirror of https://github.com/flarum/core.git synced 2025-07-25 18:51:40 +02:00

Improve install command, add custom migrations system

Implemented our own migration repository + migrator (based on Laravel's
stuff) so that we can keep track of which migrations have been run for
core and per-extension. That way we can simple call the migrator to
upgrade core/extensions, and to uninstall extensions.
This commit is contained in:
Toby Zerner
2015-08-14 12:47:59 +09:30
parent 5e459e836e
commit 7bd1cb8513
28 changed files with 822 additions and 193 deletions

View File

@@ -1,23 +0,0 @@
<?php namespace Flarum\Console;
use Illuminate\Support\ServiceProvider;
class ConsoleServiceProvider extends ServiceProvider
{
/**
* Bootstrap the application events.
*
* @return void
*/
public function boot()
{
//$this->commands('Flarum\Console\InstallCommand');
$this->commands('Flarum\Console\SeedCommand');
$this->commands('Flarum\Console\ImportCommand');
$this->commands('Flarum\Console\GenerateExtensionCommand');
}
public function register()
{
}
}

View File

@@ -1,37 +1,28 @@
<?php namespace Flarum\Console;
use Illuminate\Console\Command;
use Illuminate\Foundation\Application;
use Illuminate\Contracts\Container\Container;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Input\InputArgument;
class GenerateExtensionCommand extends Command
{
/**
* The console command name.
*
* @var string
* @var Container
*/
protected $name = 'generate:extension';
protected $container;
/**
* The console command description.
*
* @var string
*/
protected $description = 'Generate a Flarum extension skeleton.';
/**
* Create a new command instance.
*
* @return void
*/
public function __construct(Application $app)
public function __construct(Container $container)
{
parent::__construct();
$this->container = $container;
$this->app = $app;
parent::__construct();
}
protected function configure()
{
$this
->setName('generate:extension')
->setDescription("Generate a Flarum extension skeleton.");
}
/**
@@ -39,7 +30,7 @@ class GenerateExtensionCommand extends Command
*
* @return mixed
*/
public function fire()
protected function fire()
{
do {
$vendor = $this->ask('Vendor name:');

View File

@@ -1,58 +0,0 @@
<?php namespace Flarum\Console;
use Illuminate\Console\Command;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Input\InputArgument;
class SeedCommand extends Command
{
/**
* The console command name.
*
* @var string
*/
protected $name = 'seed';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Seed Flarum\'s database with fake data.';
/**
* Execute the console command.
*
* @return mixed
*/
public function fire()
{
$this->call('db:seed', ['--class' => 'Flarum\Core\Seeders\UsersTableSeeder']);
$this->call('db:seed', ['--class' => 'Flarum\Core\Seeders\DiscussionsTableSeeder']);
}
/**
* Get the console command arguments.
*
* @return array
*/
protected function getArguments()
{
return [
// ['example', InputArgument::REQUIRED, 'An example argument.'],
];
}
/**
* Get the console command options.
*
* @return array
*/
protected function getOptions()
{
return [
// ['example', null, InputOption::VALUE_OPTIONAL, 'An example option.', null],
];
}
}

View File

@@ -0,0 +1,56 @@
<?php namespace Flarum\Console;
use Illuminate\Contracts\Container\Container;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Output\OutputInterface;
class UpgradeCommand extends Command
{
/**
* @var Container
*/
protected $container;
public function __construct(Container $container)
{
$this->container = $container;
parent::__construct();
}
protected function configure()
{
$this
->setName('upgrade')
->setDescription("Run Flarum's upgrade script");
}
/**
* @inheritdoc
*/
protected function fire()
{
$this->info('Upgrading Flarum...');
$this->upgrade();
$this->info('DONE.');
}
protected function upgrade()
{
$this->container->bind('Illuminate\Database\Schema\Builder', function($container) {
return $container->make('Illuminate\Database\ConnectionInterface')->getSchemaBuilder();
});
$migrator = $this->container->make('Flarum\Migrations\Migrator');
$migrator->run(base_path('core/migrations'));
foreach ($migrator->getNotes() as $note) {
$this->info($note);
}
}
}