mirror of
				https://github.com/hauke68/Magallanes.git
				synced 2025-11-04 00:50:18 +01:00 
			
		
		
		
	Major overhauling and refactoring of Magallanes Command and Tasks modulairty and workflow.
ADVICE: there is no Backwards Compatibility with custom tasks, those using the _config instance will be broken or those using the getEnvironmentName().
This commit is contained in:
		
							parent
							
								
									05b102b273
								
							
						
					
					
						commit
						811c83e13a
					
				@ -8,6 +8,13 @@ class Mage_Autoload
 | 
				
			|||||||
        require_once $classFile;
 | 
					        require_once $classFile;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public static function isLoadable($className)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $baseDir = dirname(dirname(__FILE__));
 | 
				
			||||||
 | 
					        $classFile = $baseDir . '/' . str_replace('_', '/', $className . '.php');
 | 
				
			||||||
 | 
					        return (file_exists($classFile) && is_readable($classFile));
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public static function loadUserTask($taskName)
 | 
					    public static function loadUserTask($taskName)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        $classFile = '.mage/tasks/' . ucfirst($taskName) . '.php';
 | 
					        $classFile = '.mage/tasks/' . ucfirst($taskName) . '.php';
 | 
				
			||||||
 | 
				
			|||||||
@ -1,17 +1,39 @@
 | 
				
			|||||||
<?php
 | 
					<?php
 | 
				
			||||||
class Mage_Task_Add
 | 
					class Mage_Command_BuiltIn_Add
 | 
				
			||||||
 | 
					    extends Mage_Command_CommandAbstract
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public function environment($environmentName, $withRelases = false)
 | 
					    public function run()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        $environmentName = strtolower($environmentName);
 | 
					        $subCommand = $this->getConfig()->getArgument(1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        try {
 | 
				
			||||||
 | 
					            switch ($subCommand) {
 | 
				
			||||||
 | 
					                case 'environment':
 | 
				
			||||||
 | 
					                    $this->_environment();
 | 
				
			||||||
 | 
					                    break;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        } catch (Exception $e) {
 | 
				
			||||||
 | 
					            Mage_Console::output('<red>' . $e->getMessage() . '</red>', 1, 2);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private function _environment()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $withReleases = $this->getConfig()->getParameter('enableReleases', false);
 | 
				
			||||||
 | 
					        $environmentName = strtolower($this->getConfig()->getParameter('name'));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if ($environmentName == '') {
 | 
				
			||||||
 | 
					            throw new Exception('You must specify a name for the environment.');
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        $environmentConfigFile = '.mage/config/environment/' . $environmentName . '.yml';
 | 
					        $environmentConfigFile = '.mage/config/environment/' . $environmentName . '.yml';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (file_exists($environmentConfigFile)) {
 | 
				
			||||||
 | 
					            throw new Exception('The environment already exists.');
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        Mage_Console::output('Adding new environment: <dark_gray>' . $environmentName . '</dark_gray>');
 | 
					        Mage_Console::output('Adding new environment: <dark_gray>' . $environmentName . '</dark_gray>');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // Check if there is already an environment with the same name
 | 
					 | 
				
			||||||
        if (file_exists($environmentConfigFile)) {
 | 
					 | 
				
			||||||
            Mage_Console::output('<light_red>Error!!</light_red> Already exists an environment called <dark_gray>' . $environmentName . '</dark_gray>', 1, 2);
 | 
					 | 
				
			||||||
        } else {
 | 
					 | 
				
			||||||
        $releasesConfig = 'releases:' . PHP_EOL
 | 
					        $releasesConfig = 'releases:' . PHP_EOL
 | 
				
			||||||
                        . '  enabled: true' . PHP_EOL
 | 
					                        . '  enabled: true' . PHP_EOL
 | 
				
			||||||
                        . '  max: 10' . PHP_EOL
 | 
					                        . '  max: 10' . PHP_EOL
 | 
				
			||||||
@ -24,7 +46,7 @@ class Mage_Task_Add
 | 
				
			|||||||
                    . '  from: ./' . PHP_EOL
 | 
					                    . '  from: ./' . PHP_EOL
 | 
				
			||||||
                    . '  to: /var/www/vhosts/example.com/www' . PHP_EOL
 | 
					                    . '  to: /var/www/vhosts/example.com/www' . PHP_EOL
 | 
				
			||||||
                    . '  excludes:' . PHP_EOL
 | 
					                    . '  excludes:' . PHP_EOL
 | 
				
			||||||
                        . ($withRelases ? $releasesConfig : '')
 | 
					                    . ($withReleases ? $releasesConfig : '')
 | 
				
			||||||
                    . 'hosts:' . PHP_EOL
 | 
					                    . 'hosts:' . PHP_EOL
 | 
				
			||||||
                    . 'tasks:' . PHP_EOL
 | 
					                    . 'tasks:' . PHP_EOL
 | 
				
			||||||
                    . '  pre-deploy:' . PHP_EOL
 | 
					                    . '  pre-deploy:' . PHP_EOL
 | 
				
			||||||
@ -40,5 +62,4 @@ class Mage_Task_Add
 | 
				
			|||||||
            Mage_Console::output('<light_red>Error!!</light_red> Unable to create config file for environment called <dark_gray>' . $environmentName . '</dark_gray>', 1, 2);
 | 
					            Mage_Console::output('<light_red>Error!!</light_red> Unable to create config file for environment called <dark_gray>' . $environmentName . '</dark_gray>', 1, 2);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -1,11 +1,11 @@
 | 
				
			|||||||
<?php
 | 
					<?php
 | 
				
			||||||
 | 
					 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * Class Mage_Task_Compile
 | 
					 * Class Mage_Command_BuiltIn_Compile
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * @author Ismael Ambrosi<ismaambrosi@gmail.com>
 | 
					 * @author Ismael Ambrosi<ismaambrosi@gmail.com>
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
class Mage_Task_Compile
 | 
					class Mage_Command_BuiltIn_Compile
 | 
				
			||||||
 | 
					    extends Mage_Command_CommandAbstract
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * @see Mage_Compile::compile()
 | 
					     * @see Mage_Compile::compile()
 | 
				
			||||||
 | 
				
			|||||||
@ -1,8 +1,8 @@
 | 
				
			|||||||
<?php
 | 
					<?php
 | 
				
			||||||
class Mage_Task_Deploy
 | 
					class Mage_Command_BuiltIn_Deploy
 | 
				
			||||||
 | 
					    extends Mage_Command_CommandAbstract
 | 
				
			||||||
 | 
					    implements Mage_Command_RequiresEnvironment
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    private $_config = null;
 | 
					 | 
				
			||||||
    private $_releaseId = null;
 | 
					 | 
				
			||||||
    private $_startTime = null;
 | 
					    private $_startTime = null;
 | 
				
			||||||
    private $_startTimeHosts = null;
 | 
					    private $_startTimeHosts = null;
 | 
				
			||||||
    private $_endTimeHosts = null;
 | 
					    private $_endTimeHosts = null;
 | 
				
			||||||
@ -13,27 +13,21 @@ class Mage_Task_Deploy
 | 
				
			|||||||
        $this->_releaseId = date('YmdHis');
 | 
					        $this->_releaseId = date('YmdHis');
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public function run(Mage_Config $config)
 | 
					    public function run()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        $this->_startTime = time();
 | 
					        $this->_startTime = time();
 | 
				
			||||||
        $this->_config = $config;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if ($config->getEnvironmentName() == '') {
 | 
					        $lockFile = '.mage/' . $this->getConfig()->getEnvironment() . '.lock';
 | 
				
			||||||
            Mage_Console::output('<red>You must specify an environment</red>', 0, 2);
 | 
					 | 
				
			||||||
            return;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        $lockFile = '.mage/' . $config->getEnvironmentName() . '.lock';
 | 
					 | 
				
			||||||
        if (file_exists($lockFile)) {
 | 
					        if (file_exists($lockFile)) {
 | 
				
			||||||
            Mage_Console::output('<red>This environment is locked!</red>', 0, 2);
 | 
					            Mage_Console::output('<red>This environment is locked!</red>', 1, 2);
 | 
				
			||||||
            return;
 | 
					            return;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // Run Pre-Deployment Tasks
 | 
					        // Run Pre-Deployment Tasks
 | 
				
			||||||
        $this->_runNonDeploymentTasks('pre-deploy', $config, 'Pre-Deployment');
 | 
					        $this->_runNonDeploymentTasks('pre-deploy', $this->getConfig(), 'Pre-Deployment');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // Run Tasks for Deployment
 | 
					        // Run Tasks for Deployment
 | 
				
			||||||
        $hosts = $config->getHosts();
 | 
					        $hosts = $this->getConfig()->getHosts();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (count($hosts) == 0) {
 | 
					        if (count($hosts) == 0) {
 | 
				
			||||||
            Mage_Console::output('<light_purple>Warning!</light_purple> <dark_gray>No hosts defined, skipping deployment tasks.</dark_gray>', 1, 3);
 | 
					            Mage_Console::output('<light_purple>Warning!</light_purple> <dark_gray>No hosts defined, skipping deployment tasks.</dark_gray>', 1, 3);
 | 
				
			||||||
@ -42,20 +36,22 @@ class Mage_Task_Deploy
 | 
				
			|||||||
            $this->_startTimeHosts = time();
 | 
					            $this->_startTimeHosts = time();
 | 
				
			||||||
            foreach ($hosts as $host) {
 | 
					            foreach ($hosts as $host) {
 | 
				
			||||||
                $this->_hostsCount++;
 | 
					                $this->_hostsCount++;
 | 
				
			||||||
                $config->setHost($host);
 | 
					                $this->getConfig()->setHost($host);
 | 
				
			||||||
                $tasks = 0;
 | 
					                $tasks = 0;
 | 
				
			||||||
                $completedTasks = 0;
 | 
					                $completedTasks = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                Mage_Console::output('Deploying to <dark_gray>' . $config->getHost() . '</dark_gray>');
 | 
					                Mage_Console::output('Deploying to <dark_gray>' . $this->getConfig()->getHost() . '</dark_gray>');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                $tasksToRun = $config->getTasks();
 | 
					                $tasksToRun = $this->getConfig()->getTasks();
 | 
				
			||||||
                array_unshift($tasksToRun, 'deployment/rsync');
 | 
					                array_unshift($tasksToRun, 'deployment/rsync');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                if ($config->release('enabled', false) == true) {
 | 
					                if ($this->getConfig()->release('enabled', false) == true) {
 | 
				
			||||||
                    $config->setReleaseId($this->_releaseId);
 | 
					                    $this->getConfig()->setReleaseId($this->_releaseId);
 | 
				
			||||||
                    array_push($tasksToRun, 'deployment/releases');
 | 
					                    array_push($tasksToRun, 'deployment/releases');
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                $tasksToRun = $tasksToRun + $this->getConfig()->getTasks('post-release');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                if (count($tasksToRun) == 0) {
 | 
					                if (count($tasksToRun) == 0) {
 | 
				
			||||||
                    Mage_Console::output('<light_purple>Warning!</light_purple> <dark_gray>No </dark_gray><light_cyan>Deployment</light_cyan> <dark_gray>tasks defined.</dark_gray>', 2);
 | 
					                    Mage_Console::output('<light_purple>Warning!</light_purple> <dark_gray>No </dark_gray><light_cyan>Deployment</light_cyan> <dark_gray>tasks defined.</dark_gray>', 2);
 | 
				
			||||||
                    Mage_Console::output('Deployment to <dark_gray>' . $config->getHost() . '</dark_gray> skipped!', 1, 3);
 | 
					                    Mage_Console::output('Deployment to <dark_gray>' . $config->getHost() . '</dark_gray> skipped!', 1, 3);
 | 
				
			||||||
@ -63,10 +59,17 @@ class Mage_Task_Deploy
 | 
				
			|||||||
                } else {
 | 
					                } else {
 | 
				
			||||||
                    foreach ($tasksToRun as $taskName) {
 | 
					                    foreach ($tasksToRun as $taskName) {
 | 
				
			||||||
                        $tasks++;
 | 
					                        $tasks++;
 | 
				
			||||||
                        $task = Mage_Task_Factory::get($taskName, $config, false, 'deploy');
 | 
					                        $task = Mage_Task_Factory::get($taskName, $this->getConfig(), false, 'deploy');
 | 
				
			||||||
                        $task->init();
 | 
					                        $task->init();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        $runTask = true;
 | 
				
			||||||
                        Mage_Console::output('Running <purple>' . $task->getName() . '</purple> ... ', 2, false);
 | 
					                        Mage_Console::output('Running <purple>' . $task->getName() . '</purple> ... ', 2, false);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        if (($task instanceOf Mage_Task_Releases_SkipOnOverride) && $this->getConfig()->getParameter('overrideRelease', false)) {
 | 
				
			||||||
 | 
					                            $runTask == false;
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        if ($runTask == true) {
 | 
				
			||||||
                            $result = $task->run();
 | 
					                            $result = $task->run();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                            if ($result == true) {
 | 
					                            if ($result == true) {
 | 
				
			||||||
@ -75,6 +78,9 @@ class Mage_Task_Deploy
 | 
				
			|||||||
                            } else {
 | 
					                            } else {
 | 
				
			||||||
                                Mage_Console::output('<red>FAIL</red>', 0);
 | 
					                                Mage_Console::output('<red>FAIL</red>', 0);
 | 
				
			||||||
                            }
 | 
					                            }
 | 
				
			||||||
 | 
					                        } else {
 | 
				
			||||||
 | 
					                            Mage_Console::output('<yellow>SKIPPED</yellow>', 0);
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    if ($completedTasks == $tasks) {
 | 
					                    if ($completedTasks == $tasks) {
 | 
				
			||||||
@ -83,14 +89,14 @@ class Mage_Task_Deploy
 | 
				
			|||||||
                        $tasksColor = 'red';
 | 
					                        $tasksColor = 'red';
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    Mage_Console::output('Deployment to <dark_gray>' . $config->getHost() . '</dark_gray> compted: <' . $tasksColor . '>' . $completedTasks . '/' . $tasks . '</' . $tasksColor . '> tasks done.', 1, 3);
 | 
					                    Mage_Console::output('Deployment to <dark_gray>' . $this->getConfig()->getHost() . '</dark_gray> compted: <' . $tasksColor . '>' . $completedTasks . '/' . $tasks . '</' . $tasksColor . '> tasks done.', 1, 3);
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            $this->_endTimeHosts = time();
 | 
					            $this->_endTimeHosts = time();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // Run Post-Deployment Tasks
 | 
					        // Run Post-Deployment Tasks
 | 
				
			||||||
        $this->_runNonDeploymentTasks('post-deploy', $config, 'Post-Deployment');
 | 
					        $this->_runNonDeploymentTasks('post-deploy', $this->getConfig(), 'Post-Deployment');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // Time Information Hosts
 | 
					        // Time Information Hosts
 | 
				
			||||||
        if ($this->_hostsCount > 0) {
 | 
					        if ($this->_hostsCount > 0) {
 | 
				
			||||||
@ -106,6 +112,13 @@ class Mage_Task_Deploy
 | 
				
			|||||||
        Mage_Console::output('Total time: <dark_gray>' . $timeText . '</dark_gray>.', 1, 2);
 | 
					        Mage_Console::output('Total time: <dark_gray>' . $timeText . '</dark_gray>.', 1, 2);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Execute Pre and Post Deployment Tasks
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param string $stage
 | 
				
			||||||
 | 
					     * @param Mage_Config $config
 | 
				
			||||||
 | 
					     * @param string $title
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
    private function _runNonDeploymentTasks($stage, Mage_Config $config, $title)
 | 
					    private function _runNonDeploymentTasks($stage, Mage_Config $config, $title)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        $tasksToRun = $config->getTasks($stage);
 | 
					        $tasksToRun = $config->getTasks($stage);
 | 
				
			||||||
@ -156,6 +169,11 @@ class Mage_Task_Deploy
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Humanize Transcurred time
 | 
				
			||||||
 | 
					     * @param integer $time
 | 
				
			||||||
 | 
					     * @return string
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
    private function _transcurredTime($time)
 | 
					    private function _transcurredTime($time)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        $hours = floor($time / 3600);
 | 
					        $hours = floor($time / 3600);
 | 
				
			||||||
 | 
				
			|||||||
@ -1,5 +1,6 @@
 | 
				
			|||||||
<?php
 | 
					<?php
 | 
				
			||||||
class Mage_Task_Init
 | 
					class Mage_Command_BuiltIn_Init
 | 
				
			||||||
 | 
					    extends Mage_Command_CommandAbstract
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public function run()
 | 
					    public function run()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 | 
				
			|||||||
@ -1,7 +1,8 @@
 | 
				
			|||||||
<?php
 | 
					<?php
 | 
				
			||||||
class Mage_Task_Install
 | 
					class Mage_Command_BuiltIn_Install
 | 
				
			||||||
 | 
					    extends Mage_Command_CommandAbstract
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public function run ()
 | 
					    public function run()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        Mage_Console::output('Installing <dark_gray>Magallanes</dark_gray>... ', 1, 0);
 | 
					        Mage_Console::output('Installing <dark_gray>Magallanes</dark_gray>... ', 1, 0);
 | 
				
			||||||
        $this->_recursiveCopy('./', '/opt/magallanes-' . MAGALLANES_VERSION);
 | 
					        $this->_recursiveCopy('./', '/opt/magallanes-' . MAGALLANES_VERSION);
 | 
				
			||||||
@ -18,7 +19,7 @@ class Mage_Task_Install
 | 
				
			|||||||
        Mage_Console::output('<light_green>Success!</light_green>', 0, 2);
 | 
					        Mage_Console::output('<light_green>Success!</light_green>', 0, 2);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private function _recursiveCopy ($from, $to)
 | 
					    private function _recursiveCopy($from, $to)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        if (is_dir($from)) {
 | 
					        if (is_dir($from)) {
 | 
				
			||||||
            mkdir($to);
 | 
					            mkdir($to);
 | 
				
			||||||
 | 
				
			|||||||
@ -1,23 +1,14 @@
 | 
				
			|||||||
<?php
 | 
					<?php
 | 
				
			||||||
class Mage_Task_Lock
 | 
					class Mage_Command_BuiltIn_Lock
 | 
				
			||||||
 | 
					    extends Mage_Command_CommandAbstract
 | 
				
			||||||
 | 
					    implements Mage_Command_RequiresEnvironment
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    private $_config = null;
 | 
					    public function run()
 | 
				
			||||||
 | 
					 | 
				
			||||||
    public function run(Mage_Config $config, $unlock = false)
 | 
					 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        $this->_config = $config;
 | 
					        $lockFile = '.mage/' . $this->getConfig()->getEnvironment() . '.lock';
 | 
				
			||||||
 | 
					        file_put_contents($lockFile, 'Locked environment at date: ' . date('Y-m-d H:i:s'));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if ($config->getEnvironmentName() == '') {
 | 
					        Mage_Console::output('Locked deployment to <light_purple>' . $this->getConfig()->getEnvironment() . '</light_purple> environment', 1, 2);
 | 
				
			||||||
            Mage_Console::output('<red>You must specify an environment</red>', 0, 2);
 | 
					 | 
				
			||||||
            return;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        $lockFile = '.mage/' . $config->getEnvironmentName() . '.lock';
 | 
					 | 
				
			||||||
        if (file_exists($lockFile)) {
 | 
					 | 
				
			||||||
            @unlink($lockFile);
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        Mage_Console::output('Unlocked deployment to <light_purple>' . $config->getEnvironmentName() . '</light_purple> environment', 1, 2);
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -1,67 +1,41 @@
 | 
				
			|||||||
<?php
 | 
					<?php
 | 
				
			||||||
class Mage_Task_Releases
 | 
					class Mage_Command_BuiltIn_Releases
 | 
				
			||||||
 | 
					    extends Mage_Command_CommandAbstract
 | 
				
			||||||
 | 
					    implements Mage_Command_RequiresEnvironment
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    private $_config = null;
 | 
					 | 
				
			||||||
    private $_action = null;
 | 
					 | 
				
			||||||
    private $_release = null;
 | 
					    private $_release = null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public function setAction($action)
 | 
					    public function run()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        $this->_action = $action;
 | 
					        $subcommand = $this->getConfig()->getArgument(1);
 | 
				
			||||||
        return $this;
 | 
					        $lockFile = '.mage/' . $this->getConfig()->getEnvironment() . '.lock';
 | 
				
			||||||
    }
 | 
					        if (file_exists($lockFile) && ($subcommand == 'rollback')) {
 | 
				
			||||||
 | 
					 | 
				
			||||||
    public function getAction()
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        return $this->_action;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public function setRelease($releaseId)
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        $this->_release = $releaseId;
 | 
					 | 
				
			||||||
        return $this;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public function getRelease()
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        return $this->_release;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public function run(Mage_Config $config)
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        $this->_config = $config;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if ($config->getEnvironmentName() == '') {
 | 
					 | 
				
			||||||
            Mage_Console::output('<red>You must specify an environment</red>', 0, 2);
 | 
					 | 
				
			||||||
            return;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        $lockFile = '.mage/' . $config->getEnvironmentName() . '.lock';
 | 
					 | 
				
			||||||
        if (file_exists($lockFile)) {
 | 
					 | 
				
			||||||
            Mage_Console::output('<red>This environment is locked!</red>', 0, 2);
 | 
					            Mage_Console::output('<red>This environment is locked!</red>', 0, 2);
 | 
				
			||||||
            return;
 | 
					            return;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // Run Tasks for Deployment
 | 
					        // Run Tasks for Deployment
 | 
				
			||||||
        $hosts = $config->getHosts();
 | 
					        $hosts = $this->getConfig()->getHosts();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (count($hosts) == 0) {
 | 
					        if (count($hosts) == 0) {
 | 
				
			||||||
            Mage_Console::output('<light_purple>Warning!</light_purple> <dark_gray>No hosts defined, unable to get releases.</dark_gray>', 1, 3);
 | 
					            Mage_Console::output('<light_purple>Warning!</light_purple> <dark_gray>No hosts defined, unable to get releases.</dark_gray>', 1, 3);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
            foreach ($hosts as $host) {
 | 
					            foreach ($hosts as $host) {
 | 
				
			||||||
                $config->setHost($host);
 | 
					                $this->getConfig()->setHost($host);
 | 
				
			||||||
                switch ($this->getAction()) {
 | 
					
 | 
				
			||||||
 | 
					                switch ($subcommand) {
 | 
				
			||||||
                    case 'list':
 | 
					                    case 'list':
 | 
				
			||||||
                        $task = Mage_Task_Factory::get('releases/list', $config);
 | 
					                        $task = Mage_Task_Factory::get('releases/list', $this->getConfig());
 | 
				
			||||||
                        $task->init();
 | 
					                        $task->init();
 | 
				
			||||||
                        $result = $task->run();
 | 
					                        $result = $task->run();
 | 
				
			||||||
                        break;
 | 
					                        break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    case 'rollback':
 | 
					                    case 'rollback':
 | 
				
			||||||
                        $task = Mage_Task_Factory::get('releases/rollback', $config);
 | 
					                        $releaseId = $this->getConfig()->getParameter('release', '');
 | 
				
			||||||
 | 
					                        $task = Mage_Task_Factory::get('releases/rollback', $this->getConfig());
 | 
				
			||||||
                        $task->init();
 | 
					                        $task->init();
 | 
				
			||||||
                        $task->setRelease($this->getRelease());
 | 
					                        $task->setRelease($releaseId);
 | 
				
			||||||
                        $result = $task->run();
 | 
					                        $result = $task->run();
 | 
				
			||||||
                        break;
 | 
					                        break;
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										16
									
								
								Mage/Command/BuiltIn/Unlock.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								Mage/Command/BuiltIn/Unlock.php
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,16 @@
 | 
				
			|||||||
 | 
					<?php
 | 
				
			||||||
 | 
					class Mage_Command_BuiltIn_Unlock
 | 
				
			||||||
 | 
					    extends Mage_Command_CommandAbstract
 | 
				
			||||||
 | 
					    implements Mage_Command_RequiresEnvironment
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    public function run()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $lockFile = '.mage/' . $this->getConfig()->getEnvironment() . '.lock';
 | 
				
			||||||
 | 
					        if (file_exists($lockFile)) {
 | 
				
			||||||
 | 
					            @unlink($lockFile);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Mage_Console::output('Unlocked deployment to <light_purple>' . $this->getConfig()->getEnvironment() . '</light_purple> environment', 1, 2);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -1,22 +1,19 @@
 | 
				
			|||||||
<?php
 | 
					<?php
 | 
				
			||||||
class Mage_Task_Update
 | 
					class Mage_Command_BuiltIn_Update
 | 
				
			||||||
 | 
					    extends Mage_Command_CommandAbstract
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    private $_config = null;
 | 
					    public function run()
 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    public function run(Mage_Config $config)
 | 
					 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        $this->_config = $config;
 | 
					        $task = Mage_Task_Factory::get('scm/update', $this->getConfig());
 | 
				
			||||||
 | 
					 | 
				
			||||||
        $task = Mage_Task_Factory::get('scm/update', $config);
 | 
					 | 
				
			||||||
        $task->init();
 | 
					        $task->init();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        Mage_Console::output('Updating application via ' . $task->getName() . ' ... ', 1, 0);
 | 
					        Mage_Console::output('Updating application via ' . $task->getName() . ' ... ', 1, 0);
 | 
				
			||||||
        $result = $task->run();
 | 
					        $result = $task->run();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if ($result == true) {
 | 
					        if ($result == true) {
 | 
				
			||||||
            Mage_Console::output('OK' . PHP_EOL, 0);
 | 
					            Mage_Console::output('<green>OK</green>' . PHP_EOL, 0);
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
            Mage_Console::output('FAIL' . PHP_EOL, 0);
 | 
					            Mage_Console::output('<red>FAIL</red>' . PHP_EOL, 0);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -1,5 +1,6 @@
 | 
				
			|||||||
<?php
 | 
					<?php
 | 
				
			||||||
class Mage_Task_Upgrade
 | 
					class Mage_Command_BuiltIn_Upgrade
 | 
				
			||||||
 | 
					    extends Mage_Command_CommandAbstract
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    const DOWNLOAD = 'https://github.com/andres-montanez/Magallanes/tarball/stable';
 | 
					    const DOWNLOAD = 'https://github.com/andres-montanez/Magallanes/tarball/stable';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										10
									
								
								Mage/Command/BuiltIn/Version.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								Mage/Command/BuiltIn/Version.php
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,10 @@
 | 
				
			|||||||
 | 
					<?php
 | 
				
			||||||
 | 
					class Mage_Command_BuiltIn_Version
 | 
				
			||||||
 | 
					    extends Mage_Command_CommandAbstract
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    public function run()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        Mage_Console::output('Running <blue>Magallanes</blue> version <dark_gray>' . MAGALLANES_VERSION .'</dark_gray>', 0, 2);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										21
									
								
								Mage/Command/CommandAbstract.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								Mage/Command/CommandAbstract.php
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,21 @@
 | 
				
			|||||||
 | 
					<?php
 | 
				
			||||||
 | 
					abstract class Mage_Command_CommandAbstract
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    protected $_config = null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public abstract function run();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function setConfig(Mage_Config $config)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $this->_config = $config;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @return Mage_Config
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public function getConfig()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        return $this->_config;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										37
									
								
								Mage/Command/Factory.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								Mage/Command/Factory.php
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,37 @@
 | 
				
			|||||||
 | 
					<?php
 | 
				
			||||||
 | 
					class Mage_Command_Factory
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param string $commandName
 | 
				
			||||||
 | 
					     * @param Mage_Config $config
 | 
				
			||||||
 | 
					     * @return Mage_Command_CommandAbstract
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public static function get($commandName, Mage_Config $config)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $instance = null;
 | 
				
			||||||
 | 
					        $commandName = ucwords(str_replace('-', ' ', $commandName));
 | 
				
			||||||
 | 
					        $commandName = str_replace(' ', '', $commandName);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//        if (strpos($commandName, '/') === false) {
 | 
				
			||||||
 | 
					//            Mage_Autoload::loadUserTask($taskName);
 | 
				
			||||||
 | 
					//            $className = 'Task_' . ucfirst($taskName);
 | 
				
			||||||
 | 
					//            $instance = new $className($taskConfig, $inRollback, $stage);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//        } else {
 | 
				
			||||||
 | 
					            $commandName = str_replace(' ', '_', ucwords(str_replace('/', ' ', $commandName)));
 | 
				
			||||||
 | 
					            $className = 'Mage_Command_BuiltIn_' . $commandName;
 | 
				
			||||||
 | 
					            if (Mage_Autoload::isLoadable($className)) {
 | 
				
			||||||
 | 
					                $instance = new $className;
 | 
				
			||||||
 | 
					                $instance->setConfig($config);
 | 
				
			||||||
 | 
					            } else {
 | 
				
			||||||
 | 
					                throw new Exception('Command not found.');
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        assert($instance instanceOf Mage_Command_CommandAbstract);
 | 
				
			||||||
 | 
					        return $instance;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										4
									
								
								Mage/Command/RequiresEnvironment.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								Mage/Command/RequiresEnvironment.php
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,4 @@
 | 
				
			|||||||
 | 
					<?php
 | 
				
			||||||
 | 
					interface Mage_Command_RequiresEnvironment
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										446
									
								
								Mage/Config.php
									
									
									
									
									
								
							
							
						
						
									
										446
									
								
								Mage/Config.php
									
									
									
									
									
								
							@ -1,88 +1,132 @@
 | 
				
			|||||||
<?php
 | 
					<?php
 | 
				
			||||||
class Mage_Config
 | 
					class Mage_Config
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    private $_environmentName = null;
 | 
					    private $_arguments   = array();
 | 
				
			||||||
    private $_environment = null;
 | 
					    private $_parameters  = array();
 | 
				
			||||||
    private $_scm = null;
 | 
					    private $_environment = false;
 | 
				
			||||||
    private $_general = null;
 | 
					 | 
				
			||||||
    private $_host = null;
 | 
					    private $_host = null;
 | 
				
			||||||
    private $_releaseId = null;
 | 
					    private $_releaseId = null;
 | 
				
			||||||
 | 
					    private $_config = array(
 | 
				
			||||||
 | 
					        'general'     => array(),
 | 
				
			||||||
 | 
					        'scm'         => array(),
 | 
				
			||||||
 | 
					        'environment' => array(),
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public function reloadConfig()
 | 
					    /**
 | 
				
			||||||
 | 
					     * Load the Configuration and parses the Arguments
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param array $arguments
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public function load($arguments)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        $this->loadGeneral();
 | 
					        $this->_parse($arguments);
 | 
				
			||||||
        $this->loadSCM();
 | 
					        $this->_loadGeneral();
 | 
				
			||||||
        $this->loadEnvironment($this->getEnvironmentName());
 | 
					        $this->_loadSCM();
 | 
				
			||||||
 | 
					        $this->_loadEnvironment();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public function loadEnvironment($environment)
 | 
					    /**
 | 
				
			||||||
 | 
					     * Return the invocation argument based on a position
 | 
				
			||||||
 | 
					     * 0 = Invoked Command Name
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param integer $position
 | 
				
			||||||
 | 
					     * @return mixed
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public function getArgument($position = 0)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        if (($environment != '') && file_exists('.mage/config/environment/' . $environment . '.yml')) {
 | 
					        if (isset($this->_arguments[$position])) {
 | 
				
			||||||
            $this->_environment = spyc_load_file('.mage/config/environment/' . $environment . '.yml');
 | 
					            return $this->_arguments[$position];
 | 
				
			||||||
            $this->_environmentName = $environment;
 | 
					        } else {
 | 
				
			||||||
 | 
					 | 
				
			||||||
            // Create temporal directory for clone
 | 
					 | 
				
			||||||
            if (isset($this->_environment['deployment']['source']) && is_array($this->_environment['deployment']['source'])) {
 | 
					 | 
				
			||||||
                if (trim($this->_environment['deployment']['source']['temporal']) == '') {
 | 
					 | 
				
			||||||
                    $this->_environment['deployment']['source']['temporal'] = '/tmp';
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
                $newTemporal = rtrim($this->_environment['deployment']['source']['temporal'], '/')
 | 
					 | 
				
			||||||
                             . '/' . md5(microtime()) . '/';
 | 
					 | 
				
			||||||
                $this->_environment['deployment']['source']['temporal'] = $newTemporal;
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            return true;
 | 
					 | 
				
			||||||
        } else if (($environment != '') && !file_exists('.mage/config/environment/' . $environment . '.yml')) {
 | 
					 | 
				
			||||||
            return false;
 | 
					            return false;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					 | 
				
			||||||
        return true;
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public function loadSCM()
 | 
					    /**
 | 
				
			||||||
 | 
					     * Returns all the invocation arguments
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @return array
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public function getArguments()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        if (file_exists('.mage/config/scm.yml')) {
 | 
					        return $this->_arguments;
 | 
				
			||||||
            $this->_scm = spyc_load_file('.mage/config/scm.yml');
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public function loadGeneral()
 | 
					    /**
 | 
				
			||||||
 | 
					     * Return the a parameter
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param string $name
 | 
				
			||||||
 | 
					     * @return mixed
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public function getParameter($name, $default = null)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        if (file_exists('.mage/config/general.yml')) {
 | 
					        if (isset($this->_parameters[$name])) {
 | 
				
			||||||
            $this->_general = spyc_load_file('.mage/config/general.yml');
 | 
					            return $this->_parameters[$name];
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					            return $default;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Returns all the invocation arguments
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @return array
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public function getParameters()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        return $this->_parameters;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Returns the Current environment
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @return mixed
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
    public function getEnvironment()
 | 
					    public function getEnvironment()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        return $this->_environment;
 | 
					        return $this->_environment;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public function getEnvironmentName()
 | 
					    /**
 | 
				
			||||||
 | 
					     * Reloads the configuration
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public function reload()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        return $this->_environmentName;
 | 
					        $this->_loadGeneral();
 | 
				
			||||||
 | 
					        $this->_loadSCM();
 | 
				
			||||||
 | 
					        $this->_loadEnvironment();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public function getSCM()
 | 
					    /**
 | 
				
			||||||
 | 
					     * Get the Tasks to execute
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param string $stage
 | 
				
			||||||
 | 
					     * @return array
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public function getTasks($stage = 'on-deploy')
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        return $this->_scm;
 | 
					        $tasks = array();
 | 
				
			||||||
 | 
					        $config = $this->_getEnvironmentOption('tasks', array());
 | 
				
			||||||
 | 
					        if (isset($config[$stage])) {
 | 
				
			||||||
 | 
					            $tasks = ($config[$stage] ? (array) $config[$stage] : array());
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public function getGlobal()
 | 
					        return $tasks;
 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        return $this->_global;
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Get the current Hosts to deploy
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @return array
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
    public function getHosts()
 | 
					    public function getHosts()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        $config = $this->getEnvironment();
 | 
					 | 
				
			||||||
        $hosts = array();
 | 
					        $hosts = array();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (isset($config['hosts'])) {
 | 
					        if (isset($this->_config['environment']['hosts'])) {
 | 
				
			||||||
            if (is_array($config['hosts'])) {
 | 
					            if (is_array($this->_config['environment']['hosts'])) {
 | 
				
			||||||
                $hosts = (array) $config['hosts'];
 | 
					                $hosts = (array) $this->_config['environment']['hosts'];
 | 
				
			||||||
            } else if (is_string($config['hosts'])) {
 | 
					            } else if (is_string($this->_config['environment']['hosts']) && file_exists($this->_config['environment']['hosts']) && is_readable($this->_config['environment']['hosts'])) {
 | 
				
			||||||
                $fileContent = fopen($config['hosts'], 'r');
 | 
					                $fileContent = fopen($this->_config['environment']['hosts'], 'r');
 | 
				
			||||||
                while (($host = fgets($fileContent)) == true) {
 | 
					                while (($host = fgets($fileContent)) == true) {
 | 
				
			||||||
                    $host = trim($host);
 | 
					                    $host = trim($host);
 | 
				
			||||||
                    if ($host != '') {
 | 
					                    if ($host != '') {
 | 
				
			||||||
@ -95,18 +139,34 @@ class Mage_Config
 | 
				
			|||||||
        return $hosts;
 | 
					        return $hosts;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Set the current host
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param string $host
 | 
				
			||||||
 | 
					     * @return Mage_Config
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
    public function setHost($host)
 | 
					    public function setHost($host)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        $this->_host = $host;
 | 
					        $this->_host = $host;
 | 
				
			||||||
        return $this;
 | 
					        return $this;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Get the current host name
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @return string
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
    public function getHostName()
 | 
					    public function getHostName()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        $info = explode(':', $this->_host);
 | 
					        $info = explode(':', $this->_host);
 | 
				
			||||||
        return $info[0];
 | 
					        return $info[0];
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Get the current Host Port
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @return unknown
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
    public function getHostPort()
 | 
					    public function getHostPort()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        $info = explode(':', $this->_host);
 | 
					        $info = explode(':', $this->_host);
 | 
				
			||||||
@ -114,144 +174,222 @@ class Mage_Config
 | 
				
			|||||||
        return $info[1];
 | 
					        return $info[1];
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Get the current Host
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @return string
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
    public function getHost()
 | 
					    public function getHost()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        return $this->_host;
 | 
					        return $this->_host;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Gets General Configuration
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param string $option
 | 
				
			||||||
 | 
					     * @param string $default
 | 
				
			||||||
 | 
					     * @return mixed
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public function general($option, $default = false)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $config = $this->_config['general'];
 | 
				
			||||||
 | 
					        if (isset($config[$option])) {
 | 
				
			||||||
 | 
					            if (is_array($default) && ($config[$option] == '')) {
 | 
				
			||||||
 | 
					                return $default;
 | 
				
			||||||
 | 
					            } else {
 | 
				
			||||||
 | 
					                return $config[$option];
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					            return $default;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Gets SCM Configuration
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param string $option
 | 
				
			||||||
 | 
					     * @param string $default
 | 
				
			||||||
 | 
					     * @return mixed
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public function scm($option, $default = false)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $config = $this->_config['scm'];
 | 
				
			||||||
 | 
					        if (isset($config[$option])) {
 | 
				
			||||||
 | 
					            if (is_array($default) && ($config[$option] == '')) {
 | 
				
			||||||
 | 
					                return $default;
 | 
				
			||||||
 | 
					            } else {
 | 
				
			||||||
 | 
					                return $config[$option];
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					            return $default;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Get deployment configuration
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param string $option
 | 
				
			||||||
 | 
					     * @param string $default
 | 
				
			||||||
 | 
					     * @return string
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public function deployment($option, $default = false)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $config = $this->_getEnvironmentOption('deployment', array());
 | 
				
			||||||
 | 
					        if (isset($config[$option])) {
 | 
				
			||||||
 | 
					            if (is_array($default) && ($config[$option] == '')) {
 | 
				
			||||||
 | 
					                return $default;
 | 
				
			||||||
 | 
					            } else {
 | 
				
			||||||
 | 
					                return $config[$option];
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					            return $default;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Returns Releaseing Options
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param string $option
 | 
				
			||||||
 | 
					     * @param string $default
 | 
				
			||||||
 | 
					     * @return mixed
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public function release($option, $default = false)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $config = $this->_getEnvironmentOption('releases', array());
 | 
				
			||||||
 | 
					        if (isset($config[$option])) {
 | 
				
			||||||
 | 
					            if (is_array($default) && ($config[$option] == '')) {
 | 
				
			||||||
 | 
					                return $default;
 | 
				
			||||||
 | 
					            } else {
 | 
				
			||||||
 | 
					                return $config[$option];
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					            return $default;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Set From Deployment Path
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param string $from
 | 
				
			||||||
 | 
					     * @return Mage_Config
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public function setFrom($from)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $this->_config['environment']['deployment']['from'] = $from;
 | 
				
			||||||
 | 
					        return $this;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Sets the Current Release ID
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param integer $id
 | 
				
			||||||
 | 
					     * @return Mage_Config
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
    public function setReleaseId($id)
 | 
					    public function setReleaseId($id)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        $this->_releaseId = $id;
 | 
					        $this->_releaseId = $id;
 | 
				
			||||||
        return $this;
 | 
					        return $this;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Gets the Current Release ID
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @return integer
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
    public function getReleaseId()
 | 
					    public function getReleaseId()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        return $this->_releaseId;
 | 
					        return $this->_releaseId;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public function getTasks($stage = 'on-deploy')
 | 
					    /**
 | 
				
			||||||
 | 
					     * Parse the Command Line options
 | 
				
			||||||
 | 
					     * @return boolean
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private function _parse($arguments)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        switch ($stage) {
 | 
					        foreach ($arguments as $argument) {
 | 
				
			||||||
            case 'pre-deploy':
 | 
					            if (preg_match('/to:[\w]+/i', $argument)) {
 | 
				
			||||||
                $type = 'tasks';
 | 
					                $this->_environment = str_replace('to:', '', $argument);
 | 
				
			||||||
                $stage = 'pre-deploy';
 | 
					 | 
				
			||||||
                break;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
            case 'post-deploy':
 | 
					            } else if (preg_match('/--[\w]+/i', $argument)) {
 | 
				
			||||||
                $type = 'tasks';
 | 
					                $optionValue = explode('=', substr($argument, 2));
 | 
				
			||||||
                $stage = 'post-deploy';
 | 
					                if (count($optionValue) == 1) {
 | 
				
			||||||
                break;
 | 
					                    $this->_parameters[$optionValue[0]] = true;
 | 
				
			||||||
 | 
					                } else if (count($optionValue) == 2) {
 | 
				
			||||||
            case 'post-release':
 | 
					                    $this->_parameters[$optionValue[0]] = $optionValue[1];
 | 
				
			||||||
                $type = 'releases';
 | 
					                }
 | 
				
			||||||
                $stage = 'post-release';
 | 
					            } else {
 | 
				
			||||||
                break;
 | 
					                $this->_arguments[] = $argument;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
            case 'on-deploy':
 | 
					        }
 | 
				
			||||||
            default:
 | 
					 | 
				
			||||||
                $type = 'tasks';
 | 
					 | 
				
			||||||
                $stage = 'on-deploy';
 | 
					 | 
				
			||||||
                break;
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        $tasks = array();
 | 
					    /**
 | 
				
			||||||
        $config = $this->getEnvironment();
 | 
					     * Loads the General Configuration
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
        if (isset($config[$type]) && isset($config[$type][$stage])) {
 | 
					    private function _loadGeneral()
 | 
				
			||||||
            $tasks = ($config[$type][$stage] ? (array) $config[$type][$stage] : array());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        return $tasks;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public function getConfig($host = false)
 | 
					 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        $taskConfig = array();
 | 
					        if (file_exists('.mage/config/general.yml')) {
 | 
				
			||||||
        $taskConfig['deploy'] = $this->getEnvironment();
 | 
					            $this->_config['general'] = spyc_load_file('.mage/config/general.yml');
 | 
				
			||||||
        $taskConfig['deploy']['host'] = $host;
 | 
					        }
 | 
				
			||||||
        $taskConfig['scm'] = $this->getSCM();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        unset($taskConfig['deploy']['tasks']);
 | 
					 | 
				
			||||||
        unset($taskConfig['deploy']['hosts']);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        return $taskConfig;
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public function setFrom($from)
 | 
					    /**
 | 
				
			||||||
 | 
					     * Loads the SCM Configuration
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private function _loadSCM()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        $this->_environment['deployment']['from'] = $from;
 | 
					        if (file_exists('.mage/config/scm.yml')) {
 | 
				
			||||||
        return $this;
 | 
					            $this->_config['scm'] = spyc_load_file('.mage/config/scm.yml');
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public function deployment($option, $default = false)
 | 
					    /**
 | 
				
			||||||
 | 
					     * Loads the Environment configuration
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @throws Exception
 | 
				
			||||||
 | 
					     * @return boolean
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private function _loadEnvironment()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        $options = $this->getEnvironment();
 | 
					        $environment = $this->getEnvironment();
 | 
				
			||||||
        if (isset($options['deployment'][$option])) {
 | 
					        if (($environment != false) && file_exists('.mage/config/environment/' . $environment . '.yml')) {
 | 
				
			||||||
            if (is_array($default) && ($options['deployment'][$option] == '')) {
 | 
					            $this->_config['environment'] = spyc_load_file('.mage/config/environment/' . $environment . '.yml');
 | 
				
			||||||
                return $default;
 | 
					
 | 
				
			||||||
            } else {
 | 
					            // Create temporal directory for clone
 | 
				
			||||||
                return $options['deployment'][$option];
 | 
					            if (isset($this->_config['environment']['deployment']['source']) && is_array($this->_config['environment']['deployment']['source'])) {
 | 
				
			||||||
 | 
					                if (trim($this->_config['environment']['deployment']['source']['temporal']) == '') {
 | 
				
			||||||
 | 
					                    $this->_config['environment']['deployment']['source']['temporal'] = '/tmp';
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					                $newTemporal = rtrim($this->_config['environment']['deployment']['source']['temporal'], '/')
 | 
				
			||||||
 | 
					                . '/' . md5(microtime()) . '/';
 | 
				
			||||||
 | 
					                $this->_config['environment']['deployment']['source']['temporal'] = $newTemporal;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            return true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        } else if (($environment != '') && !file_exists('.mage/config/environment/' . $environment . '.yml')) {
 | 
				
			||||||
 | 
					            throw new Exception('Environment does not exists.');
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return false;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Get Environment root option
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param string $option
 | 
				
			||||||
 | 
					     * @param mixed $default
 | 
				
			||||||
 | 
					     * @return mixed
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private function _getEnvironmentOption($option, $default = array())
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $config = $this->_config['environment'];
 | 
				
			||||||
 | 
					        if (isset($config[$option])) {
 | 
				
			||||||
 | 
					            return $config[$option];
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
            return $default;
 | 
					            return $default;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public function release($option, $default = false)
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        $options = $this->getEnvironment();
 | 
					 | 
				
			||||||
        if (isset($options['releases'][$option])) {
 | 
					 | 
				
			||||||
            if (is_array($default) && ($options['releases'][$option] == '')) {
 | 
					 | 
				
			||||||
                return $default;
 | 
					 | 
				
			||||||
            } else {
 | 
					 | 
				
			||||||
                return $options['releases'][$option];
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        } else {
 | 
					 | 
				
			||||||
            return $default;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public function scm($option, $default = false)
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        $options = $this->_scm;
 | 
					 | 
				
			||||||
        if (isset($options[$option])) {
 | 
					 | 
				
			||||||
            if (is_array($default) && ($options[$option] == '')) {
 | 
					 | 
				
			||||||
                return $default;
 | 
					 | 
				
			||||||
            } else {
 | 
					 | 
				
			||||||
                return $options[$option];
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            return $options[$option];
 | 
					 | 
				
			||||||
        } else {
 | 
					 | 
				
			||||||
            return $default;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public function general($option, $default = false)
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        $options = $this->_general;
 | 
					 | 
				
			||||||
        if (isset($options[$option])) {
 | 
					 | 
				
			||||||
            if (is_array($default) && ($options[$option] == '')) {
 | 
					 | 
				
			||||||
                return $default;
 | 
					 | 
				
			||||||
            } else {
 | 
					 | 
				
			||||||
                return $options[$option];
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        } else {
 | 
					 | 
				
			||||||
            return $default;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public function mail($option, $default = false)
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        $options = $this->_general;
 | 
					 | 
				
			||||||
        if (isset($options['mail'][$option])) {
 | 
					 | 
				
			||||||
            if (is_array($default) && ($options['mail'][$option] == '')) {
 | 
					 | 
				
			||||||
                return $default;
 | 
					 | 
				
			||||||
            } else {
 | 
					 | 
				
			||||||
                return $options['mail'][$option];
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        } else {
 | 
					 | 
				
			||||||
            return $default;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
							
								
								
									
										275
									
								
								Mage/Console.php
									
									
									
									
									
								
							
							
						
						
									
										275
									
								
								Mage/Console.php
									
									
									
									
									
								
							@ -1,95 +1,77 @@
 | 
				
			|||||||
<?php
 | 
					<?php
 | 
				
			||||||
class Mage_Console
 | 
					class Mage_Console
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    private $_args = array();
 | 
					 | 
				
			||||||
    private $_action = null;
 | 
					 | 
				
			||||||
    private static $_actionOptions = array();
 | 
					 | 
				
			||||||
    private $_environment = null;
 | 
					 | 
				
			||||||
    private static $_log = null;
 | 
					    private static $_log = null;
 | 
				
			||||||
    private static $_logEnabled = true;
 | 
					    private static $_logEnabled = true;
 | 
				
			||||||
    private static $_screenBuffer = '';
 | 
					    private static $_screenBuffer = '';
 | 
				
			||||||
    private static $_commandsOutput = '';
 | 
					    private static $_commandsOutput = '';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public function setArgs($args)
 | 
					    /**
 | 
				
			||||||
 | 
					     * Runns a Magallanes Command
 | 
				
			||||||
 | 
					     * @throws Exception
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public function run($arguments)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        $this->_args = $args;
 | 
					        $configError = false;
 | 
				
			||||||
        array_shift($this->_args);
 | 
					        try {
 | 
				
			||||||
 | 
					            // Load Config
 | 
				
			||||||
 | 
					            $config = new Mage_Config;
 | 
				
			||||||
 | 
					            $config->load($arguments);
 | 
				
			||||||
 | 
					            $configLoadedOk = true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        } catch (Exception $e) {
 | 
				
			||||||
 | 
					            $configError = $e->getMessage();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public function parse()
 | 
					        // Command Option
 | 
				
			||||||
    {
 | 
					        $commandName = $config->getArgument(0);
 | 
				
			||||||
        if (count($this->_args) == 0) {
 | 
					 | 
				
			||||||
            return false;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if ($this->_args[0] == 'deploy') {
 | 
					        // Logging
 | 
				
			||||||
            $this->_action = 'deploy';
 | 
					        $showGrettings = true;
 | 
				
			||||||
 | 
					        if (in_array($commandName, array('install', 'upgrade', 'version'))) {
 | 
				
			||||||
        } else if ($this->_args[0] == 'releases') {
 | 
					            self::$_logEnabled = false;
 | 
				
			||||||
            $this->_action = 'releases';
 | 
					            $showGrettings = false;
 | 
				
			||||||
 | 
					 | 
				
			||||||
        } else if ($this->_args[0] == 'update') {
 | 
					 | 
				
			||||||
            $this->_action = 'update';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        } else if ($this->_args[0] == 'compile') {
 | 
					 | 
				
			||||||
            $this->_action = 'compile';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        } else if ($this->_args[0] == 'add') {
 | 
					 | 
				
			||||||
            $this->_action = 'add';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        } else if ($this->_args[0] == 'install') {
 | 
					 | 
				
			||||||
            $this->_action = 'install';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        } else if ($this->_args[0] == 'upgrade') {
 | 
					 | 
				
			||||||
            $this->_action = 'upgrade';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        } else if ($this->_args[0] == 'version') {
 | 
					 | 
				
			||||||
            $this->_action = 'version';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        } else if ($this->_args[0] == 'init') {
 | 
					 | 
				
			||||||
            $this->_action = 'init';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        } else if ($this->_args[0] == 'lock') {
 | 
					 | 
				
			||||||
            $this->_action = 'lock';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        } else if ($this->_args[0] == 'unlock') {
 | 
					 | 
				
			||||||
                $this->_action = 'unlock';
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        foreach ($this->_args as $argument) {
 | 
					 | 
				
			||||||
            if (preg_match('/to:[\w]+/i', $argument)) {
 | 
					 | 
				
			||||||
                $this->_environment = str_replace('to:', '', $argument);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            } else if (preg_match('/--[\w]+/i', $argument)) {
 | 
					 | 
				
			||||||
                $optionValue = explode('=', substr($argument, 2));
 | 
					 | 
				
			||||||
                if (count($optionValue) == 1) {
 | 
					 | 
				
			||||||
                    self::$_actionOptions[$optionValue[0]] = true;
 | 
					 | 
				
			||||||
                } else if (count($optionValue) == 2) {
 | 
					 | 
				
			||||||
                    self::$_actionOptions[$optionValue[0]] = $optionValue[1];
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public function getAction()
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        return $this->_action;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public function getEnvironment()
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        return $this->_environment;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public static function getActionOption($name, $default = false)
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        if (isset(self::$_actionOptions[$name])) {
 | 
					 | 
				
			||||||
            return self::$_actionOptions[$name];
 | 
					 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
            return $default;
 | 
					            self::$_logEnabled = $config->general('logging', false);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // Grettings
 | 
				
			||||||
 | 
					        if ($showGrettings) {
 | 
				
			||||||
 | 
					            Mage_Console::output('Starting <blue>Magallanes</blue>', 0, 2);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // Run Command
 | 
				
			||||||
 | 
					        if ($configError !== false) {
 | 
				
			||||||
 | 
					            Mage_Console::output('<red>' . $configError . '</red>', 1, 2);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					            try {
 | 
				
			||||||
 | 
					                $command = Mage_Command_Factory::get($commandName, $config);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                if ($command instanceOf Mage_Command_RequiresEnvironment) {
 | 
				
			||||||
 | 
					                    if ($config->getEnvironment() == false) {
 | 
				
			||||||
 | 
					                        throw new Exception('You must specify an environment for this command.');
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                $command->run();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            } catch (Exception $e) {
 | 
				
			||||||
 | 
					                Mage_Console::output('<red>' . $e->getMessage() . '</red>', 1, 2);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if ($showGrettings) {
 | 
				
			||||||
 | 
					            Mage_Console::output('Finished <blue>Magallanes</blue>', 0, 2);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Outputs a message to the user screen
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param string $message
 | 
				
			||||||
 | 
					     * @param integer $tabs
 | 
				
			||||||
 | 
					     * @param integer $newLine
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
    public static function output($message, $tabs = 1, $newLine = 1)
 | 
					    public static function output($message, $tabs = 1, $newLine = 1)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        self::log(strip_tags($message));
 | 
					        self::log(strip_tags($message));
 | 
				
			||||||
@ -105,6 +87,13 @@ class Mage_Console
 | 
				
			|||||||
        echo $output;
 | 
					        echo $output;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Executes a Command on the Shell
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param string $command
 | 
				
			||||||
 | 
					     * @param string $output
 | 
				
			||||||
 | 
					     * @return boolean
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
    public static function executeCommand($command, &$output = null)
 | 
					    public static function executeCommand($command, &$output = null)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        self::log('---------------------------------');
 | 
					        self::log('---------------------------------');
 | 
				
			||||||
@ -126,134 +115,12 @@ class Mage_Console
 | 
				
			|||||||
        return !$return;
 | 
					        return !$return;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public function run()
 | 
					    /**
 | 
				
			||||||
    {
 | 
					     * Log a message to the logfile.
 | 
				
			||||||
        // Load Config
 | 
					     *
 | 
				
			||||||
        $config = new Mage_Config;
 | 
					     * @param string $message
 | 
				
			||||||
        $config->loadGeneral();
 | 
					     * @param boolean $continuation
 | 
				
			||||||
        $environmentOk = $config->loadEnvironment($this->getEnvironment());
 | 
					     */
 | 
				
			||||||
        $config->loadSCM();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // Logging
 | 
					 | 
				
			||||||
        $showGrettings = true;
 | 
					 | 
				
			||||||
        if (in_array($this->getAction(), array('install', 'upgrade', 'version'))) {
 | 
					 | 
				
			||||||
            self::$_logEnabled = false;
 | 
					 | 
				
			||||||
            $showGrettings = false;
 | 
					 | 
				
			||||||
        } else {
 | 
					 | 
				
			||||||
            self::$_logEnabled = $config->general('logging', false);
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // Grettings
 | 
					 | 
				
			||||||
        if ($showGrettings) {
 | 
					 | 
				
			||||||
            Mage_Console::output('Starting <blue>Magallanes</blue>', 0, 2);
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (!$environmentOk) {
 | 
					 | 
				
			||||||
            Mage_Console::output('<red>You have selected an invalid environment</red>', 0, 2);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        } else {
 | 
					 | 
				
			||||||
            switch ($this->getAction()) {
 | 
					 | 
				
			||||||
                case 'deploy':
 | 
					 | 
				
			||||||
                    $task = new Mage_Task_Deploy;
 | 
					 | 
				
			||||||
                    $task->run($config);
 | 
					 | 
				
			||||||
                    break;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                case 'releases':
 | 
					 | 
				
			||||||
                    $task = new Mage_Task_Releases;
 | 
					 | 
				
			||||||
                    if (!isset($this->_args[1])) {
 | 
					 | 
				
			||||||
                        Mage_Console::output('<red>You must indicate a task</red>', 0, 2);
 | 
					 | 
				
			||||||
                        break;
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                    if ($this->_args[1] == 'list') {
 | 
					 | 
				
			||||||
                            $task->setAction('list');
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                    } else if ($this->_args[1] == 'rollback') {
 | 
					 | 
				
			||||||
                        if (!isset($this->_args[2])) {
 | 
					 | 
				
			||||||
                            Mage_Console::output('<red>You must indicate a release point</red>', 0, 2);
 | 
					 | 
				
			||||||
                            break;
 | 
					 | 
				
			||||||
                        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                        $task->setAction($this->_args[1]);
 | 
					 | 
				
			||||||
                        $task->setRelease($this->_args[2]);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                    } else {
 | 
					 | 
				
			||||||
                        Mage_Console::output('<red>Invalid Releases task</red>', 0, 2);
 | 
					 | 
				
			||||||
                        break;
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
                    $task->run($config);
 | 
					 | 
				
			||||||
                    break;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                case 'update';
 | 
					 | 
				
			||||||
                    $task = new Mage_Task_Update;
 | 
					 | 
				
			||||||
                    $task->run($config);
 | 
					 | 
				
			||||||
                    break;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                case 'compile';
 | 
					 | 
				
			||||||
                    $task = new Mage_Task_Compile;
 | 
					 | 
				
			||||||
                    $task->run($config);
 | 
					 | 
				
			||||||
                    break;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                case 'install';
 | 
					 | 
				
			||||||
                    $task = new Mage_Task_Install;
 | 
					 | 
				
			||||||
                    $task->run();
 | 
					 | 
				
			||||||
                    break;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                case 'lock';
 | 
					 | 
				
			||||||
                    $task = new Mage_Task_Lock;
 | 
					 | 
				
			||||||
                    $task->run($config);
 | 
					 | 
				
			||||||
                    break;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                case 'unlock';
 | 
					 | 
				
			||||||
                    $task = new Mage_Task_Lock;
 | 
					 | 
				
			||||||
                    $task->run($config, true);
 | 
					 | 
				
			||||||
                    break;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                case 'upgrade';
 | 
					 | 
				
			||||||
                    $task = new Mage_Task_Upgrade;
 | 
					 | 
				
			||||||
                    $task->run();
 | 
					 | 
				
			||||||
                    break;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                case 'init';
 | 
					 | 
				
			||||||
                    $task = new Mage_Task_Init;
 | 
					 | 
				
			||||||
                    $task->run();
 | 
					 | 
				
			||||||
                    break;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                case 'add';
 | 
					 | 
				
			||||||
                    switch ($this->_args[1]) {
 | 
					 | 
				
			||||||
                        case 'environment':
 | 
					 | 
				
			||||||
                            if (isset($this->_args[3]) && ($this->_args[3] == '--with-releases')) {
 | 
					 | 
				
			||||||
                                $withRelases = true;
 | 
					 | 
				
			||||||
                            } else {
 | 
					 | 
				
			||||||
                                $withRelases = false;
 | 
					 | 
				
			||||||
                            }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                            $task = new Mage_Task_Add;
 | 
					 | 
				
			||||||
                            $task->environment($this->_args[2], $withRelases);
 | 
					 | 
				
			||||||
                            break;
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
                    break;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                case 'version';
 | 
					 | 
				
			||||||
                    $this->showVersion();
 | 
					 | 
				
			||||||
                    break;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                default:
 | 
					 | 
				
			||||||
                    Mage_Console::output('<red>Invalid action</red>', 0, 2);
 | 
					 | 
				
			||||||
                    break;
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if ($showGrettings) {
 | 
					 | 
				
			||||||
            Mage_Console::output('Finished <blue>Magallanes</blue>', 0, 2);
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public function showVersion()
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        Mage_Console::output('Running <blue>Magallanes</blue> version <dark_gray>' . MAGALLANES_VERSION .'</dark_gray>', 0, 2);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public static function log($message, $continuation = false)
 | 
					    public static function log($message, $continuation = false)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        if (self::$_logEnabled) {
 | 
					        if (self::$_logEnabled) {
 | 
				
			||||||
 | 
				
			|||||||
@ -10,15 +10,15 @@ class Mage_Task_BuiltIn_Deployment_Releases
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    public function run()
 | 
					    public function run()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        if ($this->_config->release('enabled', false) == true) {
 | 
					        if ($this->getConfig()->release('enabled', false) == true) {
 | 
				
			||||||
            $releasesDirectory = $this->_config->release('directory', 'releases');
 | 
					            $releasesDirectory = $this->getConfig()->release('directory', 'releases');
 | 
				
			||||||
            $symlink = $this->_config->release('symlink', 'current');
 | 
					            $symlink = $this->getConfig()->release('symlink', 'current');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if (substr($symlink, 0, 1) == '/') {
 | 
					            if (substr($symlink, 0, 1) == '/') {
 | 
				
			||||||
                $releasesDirectory = rtrim($this->_config->deployment('to'), '/') . '/' . $releasesDirectory;
 | 
					                $releasesDirectory = rtrim($this->getConfig()->deployment('to'), '/') . '/' . $releasesDirectory;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            $currentCopy = $releasesDirectory . '/' . $this->_config->getReleaseId();
 | 
					            $currentCopy = $releasesDirectory . '/' . $this->getConfig()->getReleaseId();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            // Fetch the user and group from base directory
 | 
					            // Fetch the user and group from base directory
 | 
				
			||||||
            $userGroup = '33:33';
 | 
					            $userGroup = '33:33';
 | 
				
			||||||
@ -35,7 +35,7 @@ class Mage_Task_BuiltIn_Deployment_Releases
 | 
				
			|||||||
            $result = $this->_runRemoteCommand($command);
 | 
					            $result = $this->_runRemoteCommand($command);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            // Count Releases
 | 
					            // Count Releases
 | 
				
			||||||
            $maxReleases = $this->_config->release('max', false);
 | 
					            $maxReleases = $this->getConfig()->release('max', false);
 | 
				
			||||||
            if (($maxReleases !== false) && ($maxReleases > 0)) {
 | 
					            if (($maxReleases !== false) && ($maxReleases > 0)) {
 | 
				
			||||||
                $releasesList = '';
 | 
					                $releasesList = '';
 | 
				
			||||||
                $countReleasesFetch = $this->_runRemoteCommand('ls -1 ' . $releasesDirectory, $releasesList);
 | 
					                $countReleasesFetch = $this->_runRemoteCommand('ls -1 ' . $releasesDirectory, $releasesList);
 | 
				
			||||||
@ -44,7 +44,7 @@ class Mage_Task_BuiltIn_Deployment_Releases
 | 
				
			|||||||
                if ($releasesList != '') {
 | 
					                if ($releasesList != '') {
 | 
				
			||||||
                    $releasesList = explode(PHP_EOL, $releasesList);
 | 
					                    $releasesList = explode(PHP_EOL, $releasesList);
 | 
				
			||||||
                    if (count($releasesList) > $maxReleases) {
 | 
					                    if (count($releasesList) > $maxReleases) {
 | 
				
			||||||
                        $releasesToDelete = array_diff($releasesList, array($this->_config->getReleaseId()));
 | 
					                        $releasesToDelete = array_diff($releasesList, array($this->getConfig()->getReleaseId()));
 | 
				
			||||||
                        sort($releasesToDelete);
 | 
					                        sort($releasesToDelete);
 | 
				
			||||||
                        $releasesToDeleteCount = count($releasesToDelete) - $maxReleases;
 | 
					                        $releasesToDeleteCount = count($releasesToDelete) - $maxReleases;
 | 
				
			||||||
                        $releasesToDelete = array_slice($releasesToDelete, 0, $releasesToDeleteCount + 1);
 | 
					                        $releasesToDelete = array_slice($releasesToDelete, 0, $releasesToDeleteCount + 1);
 | 
				
			||||||
 | 
				
			|||||||
@ -5,8 +5,8 @@ class Mage_Task_BuiltIn_Deployment_Rsync
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
    public function getName()
 | 
					    public function getName()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        if ($this->_config->release('enabled', false) == true) {
 | 
					        if ($this->getConfig()->release('enabled', false) == true) {
 | 
				
			||||||
            if ($this->getActionOption('overrideRelease', false) == true) {
 | 
					            if ($this->getConfig()->getParameter('overrideRelease', false) == true) {
 | 
				
			||||||
                return 'Rsync (with Releases override) [built-in]';
 | 
					                return 'Rsync (with Releases override) [built-in]';
 | 
				
			||||||
            } else {
 | 
					            } else {
 | 
				
			||||||
                return 'Rsync (with Releases) [built-in]';
 | 
					                return 'Rsync (with Releases) [built-in]';
 | 
				
			||||||
@ -18,13 +18,13 @@ class Mage_Task_BuiltIn_Deployment_Rsync
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    public function run()
 | 
					    public function run()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        $overrideRelease = $this->getActionOption('overrideRelease', false);
 | 
					        $overrideRelease = $this->getConfig()->getParameter('overrideRelease', false);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if ($overrideRelease == true) {
 | 
					        if ($overrideRelease == true) {
 | 
				
			||||||
            $releaseToOverride = false;
 | 
					            $releaseToOverride = false;
 | 
				
			||||||
            $resultFetch = $this->_runRemoteCommand('ls -ld current | cut -d\"/\" -f2', $releaseToOverride);
 | 
					            $resultFetch = $this->_runRemoteCommand('ls -ld current | cut -d\"/\" -f2', $releaseToOverride);
 | 
				
			||||||
            if (is_numeric($releaseToOverride)) {
 | 
					            if (is_numeric($releaseToOverride)) {
 | 
				
			||||||
                $this->_config->setReleaseId($releaseToOverride);
 | 
					                $this->getConfig()->setReleaseId($releaseToOverride);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -36,24 +36,24 @@ class Mage_Task_BuiltIn_Deployment_Rsync
 | 
				
			|||||||
        );
 | 
					        );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // Look for User Excludes
 | 
					        // Look for User Excludes
 | 
				
			||||||
        $userExcludes = $this->_config->deployment('excludes', array());
 | 
					        $userExcludes = $this->getConfig()->deployment('excludes', array());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // If we are working with releases
 | 
					        // If we are working with releases
 | 
				
			||||||
        $deployToDirectory = $this->_config->deployment('to');
 | 
					        $deployToDirectory = $this->getConfig()->deployment('to');
 | 
				
			||||||
        if ($this->_config->release('enabled', false) == true) {
 | 
					        if ($this->getConfig()->release('enabled', false) == true) {
 | 
				
			||||||
            $releasesDirectory = $this->_config->release('directory', 'releases');
 | 
					            $releasesDirectory = $this->getConfig()->release('directory', 'releases');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            $deployToDirectory = rtrim($this->_config->deployment('to'), '/')
 | 
					            $deployToDirectory = rtrim($this->getConfig()->deployment('to'), '/')
 | 
				
			||||||
                               . '/' . $releasesDirectory
 | 
					                               . '/' . $releasesDirectory
 | 
				
			||||||
                               . '/' . $this->_config->getReleaseId();
 | 
					                               . '/' . $this->getConfig()->getReleaseId();
 | 
				
			||||||
            $this->_runRemoteCommand('mkdir -p ' . $releasesDirectory . '/' . $this->_config->getReleaseId());
 | 
					            $this->_runRemoteCommand('mkdir -p ' . $releasesDirectory . '/' . $this->getConfig()->getReleaseId());
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        $command = 'rsync -avz '
 | 
					        $command = 'rsync -avz '
 | 
				
			||||||
                 . '--rsh="ssh -p' . $this->_config->getHostPort() . '" '
 | 
					                 . '--rsh="ssh -p' . $this->getConfig()->getHostPort() . '" '
 | 
				
			||||||
                 . $this->_excludes(array_merge($excludes, $userExcludes)) . ' '
 | 
					                 . $this->_excludes(array_merge($excludes, $userExcludes)) . ' '
 | 
				
			||||||
                 . $this->_config->deployment('from') . ' '
 | 
					                 . $this->getConfig()->deployment('from') . ' '
 | 
				
			||||||
                 . $this->_config->deployment('user') . '@' . $this->_config->getHostName() . ':' . $deployToDirectory;
 | 
					                 . $this->getConfig()->deployment('user') . '@' . $this->getConfig()->getHostName() . ':' . $deployToDirectory;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        $result = $this->_runLocalCommand($command);
 | 
					        $result = $this->_runLocalCommand($command);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -10,16 +10,22 @@ class Mage_Task_BuiltIn_Releases_List
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    public function run()
 | 
					    public function run()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        if ($this->_config->release('enabled', false) == true) {
 | 
					        if ($this->getConfig()->release('enabled', false) == true) {
 | 
				
			||||||
            $releasesDirectory = $this->_config->release('directory', 'releases');
 | 
					            $releasesDirectory = $this->getConfig()->release('directory', 'releases');
 | 
				
			||||||
            $symlink = $this->_config->release('symlink', 'current');
 | 
					            $symlink = $this->getConfig()->release('symlink', 'current');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            Mage_Console::output('Releases available on <dark_gray>' . $this->_config->getHost() . '</dark_gray>');
 | 
					            Mage_Console::output('Releases available on <dark_gray>' . $this->getConfig()->getHost() . '</dark_gray>');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            // Get Releases
 | 
				
			||||||
            $output = '';
 | 
					            $output = '';
 | 
				
			||||||
            $result = $this->_runRemoteCommand('ls -1 ' . $releasesDirectory, $output);
 | 
					            $result = $this->_runRemoteCommand('ls -1 ' . $releasesDirectory, $output);
 | 
				
			||||||
            $releases = ($output == '') ? array() : explode(PHP_EOL, $output);
 | 
					            $releases = ($output == '') ? array() : explode(PHP_EOL, $output);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            // Get Current
 | 
				
			||||||
 | 
					            $result = $this->_runRemoteCommand('ls -l ' . $symlink, $output);
 | 
				
			||||||
 | 
					            $currentRelease = explode('/', $output);
 | 
				
			||||||
 | 
					            $currentRelease = trim(array_pop($currentRelease));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if (count($releases) == 0) {
 | 
					            if (count($releases) == 0) {
 | 
				
			||||||
                Mage_Console::output('<dark_gray>No releases available</dark_gray> ... ', 2);
 | 
					                Mage_Console::output('<dark_gray>No releases available</dark_gray> ... ', 2);
 | 
				
			||||||
            } else {
 | 
					            } else {
 | 
				
			||||||
@ -27,6 +33,7 @@ class Mage_Task_BuiltIn_Releases_List
 | 
				
			|||||||
                $releases  = array_slice($releases, 0, 10);
 | 
					                $releases  = array_slice($releases, 0, 10);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                foreach ($releases as $releaseIndex => $release) {
 | 
					                foreach ($releases as $releaseIndex => $release) {
 | 
				
			||||||
 | 
					                    $release = trim($release);
 | 
				
			||||||
                    $releaseIndex = str_pad($releaseIndex * -1, 2, ' ', STR_PAD_LEFT);
 | 
					                    $releaseIndex = str_pad($releaseIndex * -1, 2, ' ', STR_PAD_LEFT);
 | 
				
			||||||
                    $releaseDate = $release[0] . $release[1] . $release[2] .$release[3]
 | 
					                    $releaseDate = $release[0] . $release[1] . $release[2] .$release[3]
 | 
				
			||||||
                                 . '-'
 | 
					                                 . '-'
 | 
				
			||||||
@ -40,10 +47,15 @@ class Mage_Task_BuiltIn_Releases_List
 | 
				
			|||||||
                                 . ':'
 | 
					                                 . ':'
 | 
				
			||||||
                                 . $release[12] . $release[13];
 | 
					                                 . $release[12] . $release[13];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    $isCurrent = '';
 | 
				
			||||||
 | 
					                    if ($currentRelease == $release) {
 | 
				
			||||||
 | 
					                        $isCurrent = ' <- current';
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    Mage_Console::output(
 | 
					                    Mage_Console::output(
 | 
				
			||||||
                        'Release: <purple>' . $release . '</purple> '
 | 
					                        'Release: <purple>' . $release . '</purple> '
 | 
				
			||||||
                      . '- Date: <dark_gray>' . $releaseDate . '</dark_gray> '
 | 
					                      . '- Date: <dark_gray>' . $releaseDate . '</dark_gray> '
 | 
				
			||||||
                      . '- Index: <dark_gray>' . $releaseIndex . '</dark_gray>', 2);                        
 | 
					                      . '- Index: <dark_gray>' . $releaseIndex . '</dark_gray>' . $isCurrent, 2);
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -23,16 +23,16 @@ class Mage_Task_BuiltIn_Releases_Rollback
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    public function run()
 | 
					    public function run()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        if ($this->_config->release('enabled', false) == true) {
 | 
					        if ($this->getConfig()->release('enabled', false) == true) {
 | 
				
			||||||
            $releasesDirectory = $this->_config->release('directory', 'releases');
 | 
					            $releasesDirectory = $this->getConfig()->release('directory', 'releases');
 | 
				
			||||||
            $symlink = $this->_config->release('symlink', 'current');
 | 
					            $symlink = $this->getConfig()->release('symlink', 'current');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            $output = '';
 | 
					            $output = '';
 | 
				
			||||||
            $result = $this->_runRemoteCommand('ls -1 ' . $releasesDirectory, $output);
 | 
					            $result = $this->_runRemoteCommand('ls -1 ' . $releasesDirectory, $output);
 | 
				
			||||||
            $releases = ($output == '') ? array() : explode(PHP_EOL, $output);
 | 
					            $releases = ($output == '') ? array() : explode(PHP_EOL, $output);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if (count($releases) == 0) {
 | 
					            if (count($releases) == 0) {
 | 
				
			||||||
                Mage_Console::output('Release are not available for <dark_gray>' . $this->_config->getHost() . '</dark_gray> ... <red>FAIL</red>');
 | 
					                Mage_Console::output('Release are not available for <dark_gray>' . $this->getConfig()->getHost() . '</dark_gray> ... <red>FAIL</red>');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            } else {
 | 
					            } else {
 | 
				
			||||||
                rsort($releases);
 | 
					                rsort($releases);
 | 
				
			||||||
@ -40,6 +40,7 @@ class Mage_Task_BuiltIn_Releases_Rollback
 | 
				
			|||||||
                $releaseIsAvailable = false;
 | 
					                $releaseIsAvailable = false;
 | 
				
			||||||
                if ($this->getRelease() == '') {
 | 
					                if ($this->getRelease() == '') {
 | 
				
			||||||
                    $releaseId = $releases[0];
 | 
					                    $releaseId = $releases[0];
 | 
				
			||||||
 | 
					                    $releaseIsAvailable = true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                } else if ($this->getRelease() <= 0) {
 | 
					                } else if ($this->getRelease() <= 0) {
 | 
				
			||||||
                    $index = $this->getRelease() * -1;
 | 
					                    $index = $this->getRelease() * -1;
 | 
				
			||||||
@ -55,25 +56,25 @@ class Mage_Task_BuiltIn_Releases_Rollback
 | 
				
			|||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                if (!$releaseIsAvailable) {
 | 
					                if (!$releaseIsAvailable) {
 | 
				
			||||||
                    Mage_Console::output('Release <dark_gray>' . $this->getRelease() . '</dark_gray> is invalid or unavailable for <dark_gray>' . $this->_config->getHost() . '</dark_gray> ... <red>FAIL</red>');                    
 | 
					                    Mage_Console::output('Release <dark_gray>' . $this->getRelease() . '</dark_gray> is invalid or unavailable for <dark_gray>' . $this->getConfig()->getHost() . '</dark_gray> ... <red>FAIL</red>');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                } else {
 | 
					                } else {
 | 
				
			||||||
                    Mage_Console::output('Rollback release on <dark_gray>' . $this->_config->getHost() . '</dark_gray>');
 | 
					                    Mage_Console::output('Rollback release on <dark_gray>' . $this->getConfig()->getHost() . '</dark_gray>');
 | 
				
			||||||
                    $rollbackTo = $releasesDirectory . '/' . $releaseId;
 | 
					                    $rollbackTo = $releasesDirectory . '/' . $releaseId;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    // Tasks
 | 
					                    // Tasks
 | 
				
			||||||
                    $tasks = 1;
 | 
					                    $tasks = 1;
 | 
				
			||||||
                    $completedTasks = 0;
 | 
					                    $completedTasks = 0;
 | 
				
			||||||
                    $tasksToRun = $this->_config->getTasks();
 | 
					                    $tasksToRun = $this->getConfig()->getTasks();
 | 
				
			||||||
                    $this->_config->setReleaseId($releaseId);
 | 
					                    $this->getConfig()->setReleaseId($releaseId);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    if (count($tasksToRun) == 0) {
 | 
					                    if (count($tasksToRun) == 0) {
 | 
				
			||||||
                        Mage_Console::output('<light_purple>Warning!</light_purple> <dark_gray>No </dark_gray><light_cyan>Deployment</light_cyan> <dark_gray>tasks defined.</dark_gray>', 2);
 | 
					                        Mage_Console::output('<light_purple>Warning!</light_purple> <dark_gray>No </dark_gray><light_cyan>Deployment</light_cyan> <dark_gray>tasks defined.</dark_gray>', 2);
 | 
				
			||||||
                        Mage_Console::output('Deployment to <dark_gray>' . $this->_config->getHost() . '</dark_gray> skipped!', 1, 3);
 | 
					                        Mage_Console::output('Deployment to <dark_gray>' . $this->getConfig()->getHost() . '</dark_gray> skipped!', 1, 3);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    } else {
 | 
					                    } else {
 | 
				
			||||||
                        foreach ($tasksToRun as $taskName) {
 | 
					                        foreach ($tasksToRun as $taskName) {
 | 
				
			||||||
                            $task = Mage_Task_Factory::get($taskName, $this->_config, true, 'deploy');
 | 
					                            $task = Mage_Task_Factory::get($taskName, $this->getConfig(), true, 'deploy');
 | 
				
			||||||
                            $task->init();
 | 
					                            $task->init();
 | 
				
			||||||
                            Mage_Console::output('Running <purple>' . $task->getName() . '</purple> ... ', 2, false);
 | 
					                            Mage_Console::output('Running <purple>' . $task->getName() . '</purple> ... ', 2, false);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -118,7 +119,7 @@ class Mage_Task_BuiltIn_Releases_Rollback
 | 
				
			|||||||
                        $tasksColor = 'red';
 | 
					                        $tasksColor = 'red';
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    Mage_Console::output('Release rollback on <dark_gray>' . $this->_config->getHost() . '</dark_gray> compted: <' . $tasksColor . '>' . $completedTasks . '/' . $tasks . '</' . $tasksColor . '> tasks done.', 1, 3);
 | 
					                    Mage_Console::output('Release rollback on <dark_gray>' . $this->getConfig()->getHost() . '</dark_gray> compted: <' . $tasksColor . '>' . $completedTasks . '/' . $tasks . '</' . $tasksColor . '> tasks done.', 1, 3);
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -12,7 +12,7 @@ class Mage_Task_BuiltIn_Scm_Clone
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    public function init()
 | 
					    public function init()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        $this->_source = $this->_config->deployment('source');
 | 
					        $this->_source = $this->getConfig()->deployment('source');
 | 
				
			||||||
        switch ($this->_source['type']) {
 | 
					        switch ($this->_source['type']) {
 | 
				
			||||||
            case 'git':
 | 
					            case 'git':
 | 
				
			||||||
                $this->_name = 'SCM Clone (GIT) [built-in]';
 | 
					                $this->_name = 'SCM Clone (GIT) [built-in]';
 | 
				
			||||||
@ -39,7 +39,7 @@ class Mage_Task_BuiltIn_Scm_Clone
 | 
				
			|||||||
                         . 'git checkout ' . $this->_source['from'];
 | 
					                         . 'git checkout ' . $this->_source['from'];
 | 
				
			||||||
                $result = $result && $this->_runLocalCommand($command);
 | 
					                $result = $result && $this->_runLocalCommand($command);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                $this->_config->setFrom($this->_source['temporal']);
 | 
					                $this->getConfig()->setFrom($this->_source['temporal']);
 | 
				
			||||||
                break;
 | 
					                break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            case 'svn':
 | 
					            case 'svn':
 | 
				
			||||||
 | 
				
			|||||||
@ -12,7 +12,7 @@ class Mage_Task_BuiltIn_Scm_RemoveClone
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    public function init()
 | 
					    public function init()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        $this->_source = $this->_config->deployment('source');
 | 
					        $this->_source = $this->getConfig()->deployment('source');
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public function run()
 | 
					    public function run()
 | 
				
			||||||
 | 
				
			|||||||
@ -11,7 +11,7 @@ class Mage_Task_BuiltIn_Scm_Update
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    public function init()
 | 
					    public function init()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        switch ($this->_config->scm('type')) {
 | 
					        switch ($this->getConfig()->scm('type')) {
 | 
				
			||||||
            case 'git':
 | 
					            case 'git':
 | 
				
			||||||
                $this->_name = 'SCM Update (GIT) [built-in]';
 | 
					                $this->_name = 'SCM Update (GIT) [built-in]';
 | 
				
			||||||
                break;
 | 
					                break;
 | 
				
			||||||
@ -24,7 +24,7 @@ class Mage_Task_BuiltIn_Scm_Update
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    public function run()
 | 
					    public function run()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        switch ($this->_config->scm('type')) {
 | 
					        switch ($this->getConfig()->scm('type')) {
 | 
				
			||||||
            case 'git':
 | 
					            case 'git':
 | 
				
			||||||
                $command = 'git pull';
 | 
					                $command = 'git pull';
 | 
				
			||||||
                break;
 | 
					                break;
 | 
				
			||||||
@ -32,10 +32,14 @@ class Mage_Task_BuiltIn_Scm_Update
 | 
				
			|||||||
            case 'svn':
 | 
					            case 'svn':
 | 
				
			||||||
                $command = 'svn update';
 | 
					                $command = 'svn update';
 | 
				
			||||||
                break;
 | 
					                break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            default:
 | 
				
			||||||
 | 
					                return false;
 | 
				
			||||||
 | 
					                break;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        $result = $this->_runLocalCommand($command);
 | 
					        $result = $this->_runLocalCommand($command);
 | 
				
			||||||
        $this->_config->reloadConfig();
 | 
					        $this->getConfig()->reload();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return $result;
 | 
					        return $result;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										4
									
								
								Mage/Task/Releases/SkipOnOverride.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								Mage/Task/Releases/SkipOnOverride.php
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,4 @@
 | 
				
			|||||||
 | 
					<?php
 | 
				
			||||||
 | 
					interface Mage_Task_Releases_SkipOnOverride
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -31,11 +31,6 @@ abstract class Mage_Task_TaskAbstract
 | 
				
			|||||||
        return $this->_config;
 | 
					        return $this->_config;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public function getActionOption($name, $value = false)
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        return Mage_Console::getActionOption($name, $value);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    public function init()
 | 
					    public function init()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										31
									
								
								bin/mage.php
									
									
									
									
									
								
							
							
						
						
									
										31
									
								
								bin/mage.php
									
									
									
									
									
								
							@ -1,37 +1,18 @@
 | 
				
			|||||||
<?php
 | 
					<?php
 | 
				
			||||||
# sudo mage install
 | 
					 | 
				
			||||||
# mage version
 | 
					 | 
				
			||||||
# mage upgrade
 | 
					 | 
				
			||||||
# mage config add host s05.example.com to:[production]
 | 
					 | 
				
			||||||
# mage config git git://github.com/andres-montanez/Zend-Framework-Twig-example-app.git
 | 
					 | 
				
			||||||
# mage config svn svn://example.com/repo
 | 
					 | 
				
			||||||
# mage task:deployment/rsync to:production
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# mage releases list to:production
 | 
					 | 
				
			||||||
# mage releases rollback to:production
 | 
					 | 
				
			||||||
# mage releases rollback -1 to:production
 | 
					 | 
				
			||||||
# mage releases rollback -2 to:production
 | 
					 | 
				
			||||||
# mage releases rollback -3 to:production
 | 
					 | 
				
			||||||
# mage releases rollback 0 to:production
 | 
					 | 
				
			||||||
# mage releases rollback 20120101172148 to:production
 | 
					 | 
				
			||||||
# mage add environment production --width-releases
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# mage init
 | 
					 | 
				
			||||||
# mage add environment production
 | 
					 | 
				
			||||||
# mage deploy to:production
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
date_default_timezone_set('UTC');
 | 
					date_default_timezone_set('UTC');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$baseDir = dirname(dirname(__FILE__));
 | 
					$baseDir = dirname(dirname(__FILE__));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
define('MAGALLANES_VERSION', '0.9.10');
 | 
					define('MAGALLANES_VERSION', '0.9.10');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Preload
 | 
				
			||||||
require_once $baseDir . '/Mage/spyc.php';
 | 
					require_once $baseDir . '/Mage/spyc.php';
 | 
				
			||||||
require_once $baseDir . '/Mage/Autoload.php';
 | 
					require_once $baseDir . '/Mage/Autoload.php';
 | 
				
			||||||
spl_autoload_register(array('Mage_Autoload', 'autoload'));
 | 
					spl_autoload_register(array('Mage_Autoload', 'autoload'));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$console = new Mage_Console;
 | 
					// Clean arguments
 | 
				
			||||||
$console->setArgs($argv);
 | 
					array_shift($argv);
 | 
				
			||||||
$console->parse();
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
$console->run();
 | 
					// Run Magallanes
 | 
				
			||||||
 | 
					$console = new Mage_Console;
 | 
				
			||||||
 | 
					$console->run($argv);
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										59
									
								
								docs/commands.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										59
									
								
								docs/commands.txt
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,59 @@
 | 
				
			|||||||
 | 
					### List of Commands ###
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Installs Magallanes on the system
 | 
				
			||||||
 | 
					sudo mage install
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Displays Magallanes version
 | 
				
			||||||
 | 
					mage version
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Creats a Magallanes instance configuration
 | 
				
			||||||
 | 
					mage init
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Creates a compiled version of Magallanes using phar
 | 
				
			||||||
 | 
					mage compile
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Upgrades Magallanes itself
 | 
				
			||||||
 | 
					mage upgrade
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Add a new Environment configuration
 | 
				
			||||||
 | 
					mage add environment --name=production
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Add a new Environment configuration with releases enabled
 | 
				
			||||||
 | 
					mage add environment --name=production --enableReleases
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Performs a SCM Update, if configured
 | 
				
			||||||
 | 
					mage update
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Deploys Application to Production environment
 | 
				
			||||||
 | 
					mage deploy to:production
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Deploys Application to Production environment, overriding the current release
 | 
				
			||||||
 | 
					mage deploy to:production --overrideRelease
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Locks deployment to Production environment
 | 
				
			||||||
 | 
					mage lock to:production
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Unlocks deployment to Production environment
 | 
				
			||||||
 | 
					mage unlock to:production
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Lists all Releases on the Production environment
 | 
				
			||||||
 | 
					mage releases list to:production
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Rollback to the last Release on the Production environment
 | 
				
			||||||
 | 
					mage releases rollback to:production
 | 
				
			||||||
 | 
					mage releases rollback --release=0 to:production
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Rollback to the first, second, or thrith Release before the current Release on the Production environment
 | 
				
			||||||
 | 
					mage releases rollback --release=-1 to:production
 | 
				
			||||||
 | 
					mage releases rollback --release=-2 to:production
 | 
				
			||||||
 | 
					mage releases rollback --release=-3 to:production
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Rollback to a specific Release on the Production environment
 | 
				
			||||||
 | 
					# mage releases rollback --release=20120101172148 to:production
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### List of UPCOMING Commands ###
 | 
				
			||||||
 | 
					# mage config add host s05.example.com to:[production]
 | 
				
			||||||
 | 
					# mage config git git://github.com/andres-montanez/Zend-Framework-Twig-example-app.git
 | 
				
			||||||
 | 
					# mage config svn svn://example.com/repo
 | 
				
			||||||
 | 
					# mage task:deployment/rsync to:production
 | 
				
			||||||
@ -2,11 +2,14 @@
 | 
				
			|||||||
deployment:
 | 
					deployment:
 | 
				
			||||||
  user: root
 | 
					  user: root
 | 
				
			||||||
  from: ./
 | 
					  from: ./
 | 
				
			||||||
  to: /var/www/vhosts/example.com/staging
 | 
					  to: /var/www/
 | 
				
			||||||
#hosts: /tmp/current-staging-hosts.txt
 | 
					releases:
 | 
				
			||||||
 | 
					  enabled: true
 | 
				
			||||||
 | 
					  max: 5
 | 
				
			||||||
 | 
					  symlink: current
 | 
				
			||||||
 | 
					  directory: releases
 | 
				
			||||||
hosts:
 | 
					hosts:
 | 
				
			||||||
  - s01.example.com:22
 | 
					  - localhost
 | 
				
			||||||
  - s02.example.com
 | 
					 | 
				
			||||||
tasks:
 | 
					tasks:
 | 
				
			||||||
  pre-deploy:
 | 
					  pre-deploy:
 | 
				
			||||||
    - scm/update
 | 
					    - scm/update
 | 
				
			||||||
@ -14,4 +17,5 @@ tasks:
 | 
				
			|||||||
    - privileges
 | 
					    - privileges
 | 
				
			||||||
    - sampleTask
 | 
					    - sampleTask
 | 
				
			||||||
    - sampleTaskRollbackAware
 | 
					    - sampleTaskRollbackAware
 | 
				
			||||||
 | 
					  #post-release
 | 
				
			||||||
  #post-deploy:
 | 
					  #post-deploy:
 | 
				
			||||||
		Loading…
	
		Reference in New Issue
	
	Block a user