2016-12-30 17:40:14 +01:00
|
|
|
<?php
|
|
|
|
|
|
|
|
namespace PHPCensor\Console;
|
|
|
|
|
|
|
|
use b8\Config;
|
2017-02-01 13:52:35 +01:00
|
|
|
use b8\Store\Factory;
|
2017-08-26 19:10:28 +02:00
|
|
|
use Monolog\Handler\RotatingFileHandler;
|
2017-05-23 18:17:39 +02:00
|
|
|
use Monolog\Handler\StreamHandler;
|
|
|
|
use Monolog\Logger;
|
2017-02-01 13:52:35 +01:00
|
|
|
use PHPCensor\Command\CreateAdminCommand;
|
|
|
|
use PHPCensor\Command\CreateBuildCommand;
|
|
|
|
use PHPCensor\Command\InstallCommand;
|
|
|
|
use PHPCensor\Command\RebuildCommand;
|
|
|
|
use PHPCensor\Command\RebuildQueueCommand;
|
|
|
|
use PHPCensor\Command\RunCommand;
|
|
|
|
use PHPCensor\Command\WorkerCommand;
|
2017-08-26 19:10:28 +02:00
|
|
|
use PHPCensor\Logging\Handler;
|
2017-02-01 13:52:35 +01:00
|
|
|
use PHPCensor\Service\BuildService;
|
|
|
|
use PHPCensor\Store\BuildStore;
|
|
|
|
use PHPCensor\Store\ProjectStore;
|
|
|
|
use PHPCensor\Store\UserStore;
|
2016-12-30 17:40:14 +01:00
|
|
|
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;
|
|
|
|
|
2017-02-01 13:52:35 +01:00
|
|
|
/**
|
|
|
|
* Class Application
|
|
|
|
*
|
|
|
|
* @package PHPCensor\Console
|
|
|
|
*/
|
2016-12-30 17:40:14 +01:00
|
|
|
class Application extends BaseApplication
|
|
|
|
{
|
2017-08-26 19:10:28 +02:00
|
|
|
/**
|
|
|
|
* @param Config $applicationConfig
|
|
|
|
*
|
|
|
|
* @return Logger
|
|
|
|
*/
|
|
|
|
protected function initLogger(Config $applicationConfig)
|
|
|
|
{
|
|
|
|
$rotate = (bool)$applicationConfig->get('php-censor.log.rotate', false);
|
|
|
|
$maxFiles = (int)$applicationConfig->get('php-censor.log.max_files', 0);
|
|
|
|
|
|
|
|
$loggerHandlers = [];
|
|
|
|
if ($rotate) {
|
|
|
|
$loggerHandlers[] = new RotatingFileHandler(RUNTIME_DIR . 'console.log', $maxFiles, Logger::DEBUG);
|
|
|
|
} else {
|
|
|
|
$loggerHandlers[] = new StreamHandler(RUNTIME_DIR . 'console.log', Logger::DEBUG);
|
|
|
|
}
|
|
|
|
|
|
|
|
$logger = new Logger('php-censor', $loggerHandlers);
|
|
|
|
Handler::register($logger);
|
|
|
|
|
|
|
|
return $logger;
|
|
|
|
}
|
|
|
|
|
2016-12-30 17:40:14 +01:00
|
|
|
/**
|
|
|
|
* Constructor.
|
|
|
|
*
|
2017-02-05 05:18:33 +01:00
|
|
|
* @param string $name The name of the application
|
|
|
|
* @param string $version The version of the application
|
2016-12-30 17:40:14 +01:00
|
|
|
*/
|
2017-02-05 05:18:33 +01:00
|
|
|
public function __construct($name = 'PHP Censor - Continuous Integration for PHP', $version = '')
|
2016-12-30 17:40:14 +01:00
|
|
|
{
|
|
|
|
parent::__construct($name, $version);
|
|
|
|
|
|
|
|
$applicationConfig = Config::getInstance();
|
|
|
|
$databaseSettings = $applicationConfig->get('b8.database', []);
|
|
|
|
|
2017-02-05 05:18:33 +01:00
|
|
|
$phinxSettings = [];
|
|
|
|
if ($databaseSettings) {
|
|
|
|
$phinxSettings = [
|
|
|
|
'paths' => [
|
2017-02-05 07:13:59 +01:00
|
|
|
'migrations' => ROOT_DIR . 'src/PHPCensor/Migrations',
|
2017-02-05 05:18:33 +01:00
|
|
|
],
|
|
|
|
'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'],
|
|
|
|
],
|
2016-12-30 17:40:14 +01:00
|
|
|
],
|
2017-02-05 05:18:33 +01:00
|
|
|
];
|
|
|
|
}
|
2017-01-29 12:53:00 +01:00
|
|
|
|
|
|
|
if (!empty($databaseSettings['port'])) {
|
|
|
|
$phinxSettings['environments']['php-censor']['port'] = (integer)$databaseSettings['port'];
|
|
|
|
}
|
2016-12-30 17:40:14 +01:00
|
|
|
|
|
|
|
$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')
|
|
|
|
);
|
2017-02-01 13:52:35 +01:00
|
|
|
|
|
|
|
/** @var UserStore $userStore */
|
|
|
|
$userStore = Factory::getStore('User');
|
|
|
|
|
|
|
|
/** @var ProjectStore $projectStore */
|
|
|
|
$projectStore = Factory::getStore('Project');
|
|
|
|
|
|
|
|
/** @var BuildStore $buildStore */
|
|
|
|
$buildStore = Factory::getStore('Build');
|
|
|
|
|
2017-08-26 19:10:28 +02:00
|
|
|
$logger = $this->initLogger($applicationConfig);
|
|
|
|
|
|
|
|
$this->add(new RunCommand($logger));
|
|
|
|
$this->add(new RebuildCommand($logger));
|
2017-02-01 13:52:35 +01:00
|
|
|
$this->add(new InstallCommand());
|
|
|
|
$this->add(new CreateAdminCommand($userStore));
|
|
|
|
$this->add(new CreateBuildCommand($projectStore, new BuildService($buildStore)));
|
2017-08-26 19:10:28 +02:00
|
|
|
$this->add(new WorkerCommand($logger));
|
|
|
|
$this->add(new RebuildQueueCommand($logger));
|
2016-12-30 17:40:14 +01:00
|
|
|
}
|
|
|
|
}
|