},
"require": {
"pear/archive_tar": "1.3.*",
- "doctrine/dbal": "v2.5.13",
+ "doctrine/dbal": "^2.5",
"d11wtq/boris": "~1",
"andy128k/missing-tools": "~0.3",
- "andy128k/pegp": "0.2",
+ "andy128k/pegp": "~0.2",
"pimple/pimple": "~3.0",
"twig/twig": "~1"
},
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "b880eb10592b0ae55866fd75d9136ab7",
+ "content-hash": "644aeae9afe6d53dd080f9d189b994f5",
"packages": [
{
"name": "andy128k/missing-tools",
public function register(Container $container)
{
$container['ipf_commands'] = function ($c) {
+ /** @var \IPF_Settings $settings */
+ $settings = $c['settings'];
+ $document_root = $settings->get('document_root');
+ $project_root = $settings->get('project_root');
+ $staticDir = $document_root . DIRECTORY_SEPARATOR . $settings->get('static_url');
+ $uploadsDir = $document_root . DIRECTORY_SEPARATOR . $settings->get('upload_url');
+ $databaseConfig = $settings->get('database');
return array(
new \IPF_Command_Shell,
- new \IPF_Command_DebugServer,
+ new \IPF_Command_DebugServer($document_root),
new \IPF_Command_Routes($c['router']),
- new \IPF_Command_DB,
- new \IPF_Command_DBDump,
- new \IPF_Command_DBRestore,
- new \IPF_Command_CollectStatic($c['apps']),
- new \IPF_Command_Pack,
- new \IPF_Command_Unpack,
- new \IPF_Command_CreateMigration,
- new \IPF_Command_Migrate($c['apps'], $c['db']),
+ new \IPF_Command_DB($databaseConfig),
+ new \IPF_Command_DBDump($databaseConfig),
+ new \IPF_Command_DBRestore($databaseConfig),
+ new \IPF_Command_CollectStatic($c['apps'], $staticDir),
+ new \IPF_Command_Pack($uploadsDir, $databaseConfig),
+ new \IPF_Command_Unpack($uploadsDir, $databaseConfig),
+ new \IPF_Command_CreateMigration($project_root),
+ new \IPF_Command_Migrate($c['apps'], $c['db'], $project_root),
);
};
/** @var IPF_Application[] */
private $apps;
+ /** @var string */
+ private $staticDir;
- function __construct(array $apps)
+ function __construct(array $apps, $staticDir)
{
$this->apps = $apps;
+ $this->staticDir = $staticDir;
}
public function run($args=null)
if (!in_array('--quiet', $args))
print "Collecting static files\n";
- $destination = IPF::get('document_root') . DIRECTORY_SEPARATOR . IPF::get('static_url');
-
foreach ($this->apps as $app) {
$source = $app->getPath() . 'static';
if (is_dir($source))
- IPF_Utils::copyDirectory($source, $destination);
+ IPF_Utils::copyDirectory($source, $this->staticDir);
foreach ($app->assets() as $asset => $output) {
$compiler = new IPF_Assets($app->getPath());
$src = $compiler->path($asset);
- $dest = $destination . $output;
+ $dest = $this->staticDir . $output;
if (is_dir($src)) {
IPF_Utils::copyDirectory($src, $dest);
public $command = 'createmigration';
public $description = 'Create migration';
- public function run($args=null)
+ /** @var string */
+ private $project_root;
+
+ function __construct($project_root)
+ {
+ $this->project_root = $project_root;
+ }
+
+ public function run($args = null)
{
$m = new Migrations;
- $filename = $m->createMigration(IPF::get('project_root').'/project/db/migrations', implode('_', $args));
+ $filename = $m->createMigration($this->project_root . '/project/db/migrations', implode('_', $args));
echo "Create new migration $filename\n";
}
}
public $command = 'db';
public $description = 'Database console';
+ /** @var array */
+ private $databaseConfig;
+
+ function __construct(array $databaseConfig)
+ {
+ $this->databaseConfig = $databaseConfig;
+ }
+
public function run($args=null)
{
- $db = IPF::get('database');
+ $db = $this->databaseConfig;
if ($db['driver'] === 'mysql') {
IPF_Shell::call('mysql',
'-p'.$db['password'],
$db['database']);
} else {
- print 'Do not know how to connect to "'.$db['scheme'].'" database.';
+ print "Do not know how to connect to \"{$db['type']}\" database.\n";
}
}
}
public $command = 'dbdump';
public $description = 'Dumps database to a file';
+ /** @var array */
+ private $databaseConfig;
+
+ function __construct(array $databaseConfig)
+ {
+ $this->databaseConfig = $databaseConfig;
+ }
+
public function run($args=null)
{
+ $db = $this->databaseConfig;
$output = 'dump.sql';
if (!in_array('--quiet', $args))
print "Dumping database to file $output\n";
- $db = IPF::get('database');
-
if ($db['driver'] === 'mysql') {
IPF_Shell::call('mysqldump',
'-h'.$db['host'],
'-r'.$output,
$db['database']);
} else {
- print 'Do not know how to connect to "'.$db['scheme'].'" database.';
+ print "Do not know how to connect to \"{$db['driver']}\" database.\n";
}
}
}
-
public $command = 'dbrestore';
public $description = 'Restores database from a file';
+ /** @var array */
+ private $databaseConfig;
+
+ function __construct(array $databaseConfig)
+ {
+ $this->databaseConfig = $databaseConfig;
+ }
+
public function run($args=null)
{
+ $db = $this->databaseConfig;
$input = 'dump.sql';
if (!in_array('--quiet', $args))
print "Restoring database from file $input\n";
- $db = IPF::get('database');
-
if ($db['driver'] === 'mysql') {
IPF_Shell::call('mysql',
'-h'.$db['host'],
'source '.$input,
$db['database']);
} else {
- print 'Do not know how to connect to "'.$db['scheme'].'" database.';
+ print "Do not know how to connect to \"{$db['driver']}\" database.\n";
}
}
}
-
public $command = 'run';
public $description = 'Run debug server on 0.0.0.0:8000';
+ /** @var string */
+ private $document_root;
+
+ function __construct($document_root)
+ {
+ $this->document_root = $document_root;
+ }
+
public function run($args=null)
{
- $root = IPF::get('document_root');
+ $document_root = $this->document_root;
$router = dirname(__FILE__).'/../debug_router.php';
- IPF_Shell::call('php', '-S', '0.0.0.0:8000', '-t', $root, $router);
+ IPF_Shell::call('php', '-S', '0.0.0.0:8000', '-t', $document_root, $router);
}
}
-
private $apps;
/** @var Connection */
private $connection;
+ /** @var string */
+ private $project_root;
- function __construct(array $apps, Connection $connection)
+ function __construct(array $apps, Connection $connection, $project_root)
{
$this->apps = $apps;
$this->connection = $connection;
+ $this->project_root = $project_root;
}
public function run($args=null)
{
- $paths = array(IPF::get('project_root').'/project/db/migrations');
+ $paths = array($this->project_root .'/project/db/migrations');
foreach ($this->apps as $app) {
$paths[] = $app->getPath() . 'migrations';
}
public $command = 'pack';
public $description = 'Pack database dump and uploaded files to a single archive';
- public function run($args=null)
+ /** @var string */
+ private $uploadsDir;
+ /** @var array */
+ private $databaseConfig;
+
+ function __construct($uploadsDir, array $databaseConfig)
+ {
+ $this->uploadsDir = $uploadsDir;
+ $this->databaseConfig = $databaseConfig;
+ }
+
+ public function run($args = null)
{
$outputFileName = 'working-data.tar';
- $uploadsDir = IPF::get('document_root') . IPF::getUploadUrl();
- if (is_dir($uploadsDir)) {
+ if (is_dir($this->uploadsDir)) {
$workingDirectory = getcwd();
- chdir($uploadsDir . '/..');
+ chdir($this->uploadsDir . '/..');
$tar_object = new Archive_Tar($workingDirectory . '/upload.tar');
$tar_object->setErrorHandling(PEAR_ERROR_PRINT);
$tar_object->create(['upload']);
chdir($workingDirectory);
}
- $dumpCommand = new IPF_Command_DBDump;
+ $dumpCommand = new IPF_Command_DBDump($this->databaseConfig);
$dumpCommand->run(array('--quiet'));
IPF_Shell::unlink($outputFileName);
IPF_Shell::unlink('dump.sql');
}
}
-
<?php
+use Boris\Boris;
+
class IPF_Command_Shell
{
public $command = 'shell';
public function run($args=null)
{
- $boris = new \Boris\Boris('ipf> ');
+ $boris = new Boris('ipf> ');
$boris->start();
}
}
-
public $command = 'unpack';
public $description = 'Unpack database dump and uploaded files from an archive';
+ /** @var string */
+ private $uploadsDir;
+ /** @var array */
+ private $databaseConfig;
+
+ function __construct($uploadsDir, array $databaseConfig)
+ {
+ $this->uploadsDir = $uploadsDir;
+ $this->databaseConfig = $databaseConfig;
+ }
+
public function run($args=null)
{
$inputFileName = 'working-data.tar';
$archive = new Archive_Tar($inputFileName);
$archive->extract('.');
- $restoreCommand = new IPF_Command_DBRestore;
+ $restoreCommand = new IPF_Command_DBRestore($this->databaseConfig);
$restoreCommand->run(array('--quiet'));
IPF_Shell::unlink('dump.sql');
- $uploadsDir = IPF::get('document_root') . IPF::getUploadUrl();
$archive = new Archive_Tar('upload.tar');
- $archive->extract($uploadsDir . '/..');
+ $archive->extract($this->uploadsDir . '/..');
IPF_Shell::unlink('upload.tar');
}
}
-