Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 6 |
CRAP | |
0.00% |
0 / 54 |
AbstractMigration | |
0.00% |
0 / 1 |
|
0.00% |
0 / 6 |
156 | |
0.00% |
0 / 54 |
__construct | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 4 |
|||
prepare | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 7 |
|||
run | |
0.00% |
0 / 1 |
20 | |
0.00% |
0 / 16 |
|||
migrate | n/a |
0 / 0 |
1 | n/a |
0 / 0 |
|||||
showCurrentVersion | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 6 |
|||
listFiles | |
0.00% |
0 / 1 |
6 | |
0.00% |
0 / 8 |
|||
prompt | |
0.00% |
0 / 1 |
6 | |
0.00% |
0 / 13 |
<?php namespace App\Commands; | |
use Framework\CLI\CLI; | |
use Framework\CLI\Command; | |
use Framework\CLI\Console; | |
use Framework\Database\Extra\Migrator; | |
abstract class AbstractMigration extends Command | |
{ | |
protected array $options = [ | |
'-l, --list' => 'List files.', | |
'-y, --yes' => 'Proceed migration without prompt.', | |
]; | |
public function __construct(Console $console) | |
{ | |
parent::__construct($console); | |
$this->prepare(); | |
} | |
protected function prepare() | |
{ | |
$this->active = \App::getConfig('console')['defaults'] ?? true; | |
$this->options['-l, --list'] = $this->console->getLanguage() | |
->render('migrations', 'listFiles'); | |
$this->options['-y, --yes'] = $this->console->getLanguage() | |
->render('migrations', 'noPrompt'); | |
} | |
public function run(array $options = [], array $arguments = []) : void | |
{ | |
$migrator = new Migrator(\App::database(), \App::locator()); | |
$this->showCurrentVersion($migrator); | |
$migrator->addFiles( | |
\App::locator()->getFiles('Migrations') | |
); | |
if (isset($options['l'])) { | |
$this->listFiles($migrator); | |
} | |
if ( ! isset($options['y']) && ! $this->prompt()) { | |
return; | |
} | |
$this->migrate($migrator); | |
CLI::write($this->console->getLanguage()->render('migrations', 'migrationSucceed')); | |
$this->showCurrentVersion($migrator); | |
} | |
abstract protected function migrate(Migrator $migrator) : void; | |
protected function showCurrentVersion(Migrator $migrator) : void | |
{ | |
CLI::write( | |
$this->console->getLanguage() | |
->render('migrations', 'currentVersion', [$migrator->getCurrentVersion()]) | |
); | |
} | |
protected function listFiles(Migrator $migrator) : void | |
{ | |
CLI::write( | |
$this->console->getLanguage()->render('migrations', 'filesFound') | |
); | |
foreach ($migrator->getFiles() as $version => $file) { | |
CLI::write(" {$version} - {$file}"); | |
} | |
} | |
protected function prompt() : bool | |
{ | |
$prompt = CLI::prompt( | |
$this->console->getLanguage()->render('migrations', 'proceedMigration'), | |
['n', 'y'] | |
); | |
if ($prompt !== 'y') { | |
CLI::write( | |
$this->console->getLanguage()->render('migrations', 'migrationAborted') | |
); | |
return false; | |
} | |
return true; | |
} | |
} |