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 .
*/
2013-11-06 15:44:05 +01:00
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 ;
2014-07-16 15:52:23 +02:00
$configDir = getcwd () . '/.mage' ;
2012-09-21 05:23:07 +02:00
2014-11-01 22:31:04 +01:00
Console :: output ( 'Initiating managing process for application with <bold>Magallanes</bold>' );
2012-09-21 05:23:07 +02:00
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 ());
2012-09-21 05:23:07 +02:00
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 {
2013-11-06 15:44:05 +01:00
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
2013-11-06 15:44:05 +01: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
}
2013-11-06 15:44:05 +01: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 ;
2013-11-06 15:44:05 +01:00
2014-08-06 19:01:39 +02:00
return $template ;
2013-11-06 15:44:05 +01:00
}
2014-01-29 03:43:43 +01:00
}