php-censor/src/PHPCensor/Console/Application.php
2017-01-29 18:53:00 +07:00

73 lines
2.3 KiB
PHP

<?php
namespace PHPCensor\Console;
use b8\Config;
use Symfony\Component\Console\Application as BaseApplication;
use Phinx\Console\Command\Create;
use Phinx\Console\Command\Migrate;
use Phinx\Console\Command\Rollback;
use Phinx\Console\Command\Status;
use Phinx\Config\Config as PhinxConfig;
class Application extends BaseApplication
{
/**
* Constructor.
*
* @param string $name The name of the application
* @param string $version The version of the application
*/
public function __construct($name = 'PHP Censor - Continuous Integration for PHP', $version = '')
{
parent::__construct($name, $version);
$applicationConfig = Config::getInstance();
$databaseSettings = $applicationConfig->get('b8.database', []);
$phinxSettings = [
'paths' => [
'migrations' => 'src/PHPCensor/Migrations',
],
'environments' => [
'default_migration_table' => 'migration',
'default_database' => 'php-censor',
'php-censor' => [
'adapter' => $databaseSettings['type'],
'host' => $databaseSettings['servers']['write'][0]['host'],
'name' => $databaseSettings['name'],
'user' => $databaseSettings['username'],
'pass' => $databaseSettings['password'],
],
],
];
if (!empty($databaseSettings['port'])) {
$phinxSettings['environments']['php-censor']['port'] = (integer)$databaseSettings['port'];
}
$phinxConfig = new PhinxConfig($phinxSettings);
$this->add(
(new Create())
->setConfig($phinxConfig)
->setName('php-censor-migrations:create')
);
$this->add(
(new Migrate())
->setConfig($phinxConfig)
->setName('php-censor-migrations:migrate')
);
$this->add(
(new Rollback())
->setConfig($phinxConfig)
->setName('php-censor-migrations:rollback')
);
$this->add(
(new Status())
->setConfig($phinxConfig)
->setName('php-censor-migrations:status')
);
}
}