magallanes/Mage/Command/BuiltIn/InitCommand.php

114 lines
3.7 KiB
PHP
Raw Normal View History

2011-11-24 02:45:04 +01:00
<?php
2013-11-05 17:12:09 +01:00
/*
* This file is part of the Magallanes package.
*
* (c) Andrés Montañez <andres@andresmontanez.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Mage\Command\BuiltIn;
use Mage\Command\AbstractCommand;
use Mage\Console;
/**
* Initializes a Magallanes Configuration into a Proyect
*
* @author Andrés Montañez <andres@andresmontanez.com>
*/
class InitCommand extends AbstractCommand
2011-11-24 02:45:04 +01:00
{
2013-07-07 01:45:54 +02:00
2014-08-06 19:01:39 +02:00
/**
* Command for Initalize a new Configuration Proyect
* @see \Mage\Command\AbstractCommand::run()
*/
2011-11-24 02:45:04 +01:00
public function run()
{
2014-08-07 02:43:29 +02:00
$exitCode = 50;
$configDir = getcwd() . '/.mage';
2014-11-01 22:31:04 +01:00
Console::output('Initiating managing process for application with <bold>Magallanes</bold>');
2011-11-24 02:45:04 +01:00
// Check if there is already a config dir
if (file_exists($configDir)) {
2014-11-01 22:31:04 +01:00
Console::output('<light_red>Error!!</light_red> Already exists <bold>.mage</bold> directory.', 1, 2);
2011-11-24 02:45:04 +01:00
} else {
$results = array();
$results[] = mkdir($configDir);
$results[] = mkdir($configDir . '/logs');
2013-07-07 01:45:54 +02:00
$results[] = file_put_contents($configDir . '/logs/.gitignore', "*\n!.gitignore");
2011-11-24 02:45:04 +01:00
$results[] = mkdir($configDir . '/tasks');
2013-07-07 01:45:54 +02:00
$results[] = touch($configDir . '/tasks/.gitignore');
2011-11-24 02:45:04 +01:00
$results[] = mkdir($configDir . '/config');
$results[] = mkdir($configDir . '/config/environment');
2013-07-07 01:45:54 +02:00
$results[] = touch($configDir . '/config/environment/.gitignore');
$results[] = file_put_contents($configDir . '/config/general.yml', $this->getGeneralConfig());
2011-11-24 02:45:04 +01:00
if (!in_array(false, $results)) {
2014-11-01 22:31:04 +01:00
Console::output('<light_green>Success!!</light_green> The configuration for <bold>Magallanes</bold> has been generated at <blue>.mage</blue> directory.');
Console::output('<bold>Please!! Review and adjust the configuration.</bold>', 2, 2);
2014-08-07 02:43:29 +02:00
$exitCode = 0;
2011-11-24 02:45:04 +01:00
} else {
Console::output('<light_red>Error!!</light_red> Unable to generate the configuration.', 1, 2);
2011-11-24 02:45:04 +01:00
}
2014-08-07 02:43:29 +02:00
return $exitCode;
2011-11-24 02:45:04 +01:00
}
}
2013-07-07 01:45:54 +02:00
/**
* Returns the Global Configuration
* @return string
*/
2013-07-07 01:45:54 +02:00
protected function getGeneralConfig()
{
2014-08-06 19:01:39 +02:00
// Assamble Global Settings
$projectName = $this->getConfig()->getParameter('name', '');
$notificationEmail = $this->getConfig()->getParameter('email', '');
$notificationEnabled = ($notificationEmail != '') ? 'true' : 'false';
2013-07-07 01:45:54 +02:00
2014-08-06 19:01:39 +02:00
$globalSettings = str_replace(
array(
'%projectName%',
'%notificationEmail%',
'%notificationEnabled%',
'%loggingEnabled%',
'%maxlogs%',
'%ssh_needs_tty%',
),
array(
$projectName,
$notificationEmail,
$notificationEnabled,
'true',
30,
'false'
),
$this->getGeneralConfigTemplate()
);
2013-07-07 01:45:54 +02:00
2014-08-06 19:01:39 +02:00
return $globalSettings;
2013-07-07 01:45:54 +02:00
}
/**
* Returns the YAML Template for the Global Configuration
* @return string
*/
protected function getGeneralConfigTemplate()
{
2014-08-06 19:01:39 +02:00
$template = '# global settings' . PHP_EOL
. 'name: %projectName%' . PHP_EOL
. 'email: %notificationEmail%' . PHP_EOL
. 'notifications: %notificationEnabled%' . PHP_EOL
. 'logging: %loggingEnabled%' . PHP_EOL
. 'maxlogs: %maxlogs%' . PHP_EOL
. 'ssh_needs_tty: %ssh_needs_tty%' . PHP_EOL;
2014-08-06 19:01:39 +02:00
return $template;
}
}