mirror of
				https://github.com/hauke68/Magallanes.git
				synced 2025-11-04 00:50:18 +01:00 
			
		
		
		
	Releases List.
This commit is contained in:
		
							parent
							
								
									b8b054757a
								
							
						
					
					
						commit
						dd46e4d637
					
				@ -7,6 +7,7 @@ class Mage_Console
 | 
				
			|||||||
    private $_environment = null;
 | 
					    private $_environment = null;
 | 
				
			||||||
    private static $_log = null;
 | 
					    private static $_log = null;
 | 
				
			||||||
    private static $_logEnabled = true;
 | 
					    private static $_logEnabled = true;
 | 
				
			||||||
 | 
					    private static $_screenBuffer = '';
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    public function setArgs($args)
 | 
					    public function setArgs($args)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
@ -19,6 +20,9 @@ class Mage_Console
 | 
				
			|||||||
            if ($this->_args[0] == 'deploy') {
 | 
					            if ($this->_args[0] == 'deploy') {
 | 
				
			||||||
                $this->_action = 'deploy';
 | 
					                $this->_action = 'deploy';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            } else if ($this->_args[0] == 'releases') {
 | 
				
			||||||
 | 
					                $this->_action = 'releases';
 | 
				
			||||||
 | 
					                
 | 
				
			||||||
            } else if ($this->_args[0] == 'update') {
 | 
					            } else if ($this->_args[0] == 'update') {
 | 
				
			||||||
                $this->_action = 'update';
 | 
					                $this->_action = 'update';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -53,6 +57,10 @@ class Mage_Console
 | 
				
			|||||||
    {
 | 
					    {
 | 
				
			||||||
        self::log(strip_tags($message));
 | 
					        self::log(strip_tags($message));
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
 | 
					        self::$_screenBuffer .= str_repeat("\t", $tabs)
 | 
				
			||||||
 | 
					                              . strip_tags($message)
 | 
				
			||||||
 | 
					                              . str_repeat(PHP_EOL, $newLine);
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
        $output = str_repeat("\t", $tabs)
 | 
					        $output = str_repeat("\t", $tabs)
 | 
				
			||||||
                . Mage_Console_Colors::color($message)
 | 
					                . Mage_Console_Colors::color($message)
 | 
				
			||||||
                . str_repeat(PHP_EOL, $newLine);
 | 
					                . str_repeat(PHP_EOL, $newLine);
 | 
				
			||||||
@ -60,7 +68,7 @@ class Mage_Console
 | 
				
			|||||||
        echo $output;
 | 
					        echo $output;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    public static function executeCommand($command)
 | 
					    public static function executeCommand($command, &$output = null)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        self::log('---------------------------------');
 | 
					        self::log('---------------------------------');
 | 
				
			||||||
        self::log('---- Executing: $ ' . $command);
 | 
					        self::log('---- Executing: $ ' . $command);
 | 
				
			||||||
@ -69,6 +77,10 @@ class Mage_Console
 | 
				
			|||||||
        system($command . ' 2>&1', $return);
 | 
					        system($command . ' 2>&1', $return);
 | 
				
			||||||
        $log = ob_get_clean();
 | 
					        $log = ob_get_clean();
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
 | 
					        if (!$return) {
 | 
				
			||||||
 | 
					            $output = trim($log);            
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
        self::log($log);
 | 
					        self::log($log);
 | 
				
			||||||
        self::log('---------------------------------');
 | 
					        self::log('---------------------------------');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -94,6 +106,16 @@ class Mage_Console
 | 
				
			|||||||
                $task->run($config);
 | 
					                $task->run($config);
 | 
				
			||||||
                break;
 | 
					                break;
 | 
				
			||||||
                
 | 
					                
 | 
				
			||||||
 | 
					            case 'releases':
 | 
				
			||||||
 | 
					                $task = new Mage_Task_Releases;
 | 
				
			||||||
 | 
					                switch ($this->_args[1]) {
 | 
				
			||||||
 | 
					                    case 'list':
 | 
				
			||||||
 | 
					                        $task->setAction($this->_args[1]);
 | 
				
			||||||
 | 
					                        break;                        
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                $task->run($config);
 | 
				
			||||||
 | 
					                break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            case 'update';
 | 
					            case 'update';
 | 
				
			||||||
                $task = new Mage_Task_Update;
 | 
					                $task = new Mage_Task_Update;
 | 
				
			||||||
                $task->run($config);
 | 
					                $task->run($config);
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										50
									
								
								Mage/Task/BuiltIn/Releases/List.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										50
									
								
								Mage/Task/BuiltIn/Releases/List.php
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,50 @@
 | 
				
			|||||||
 | 
					<?php
 | 
				
			||||||
 | 
					class Mage_Task_BuiltIn_Releases_List
 | 
				
			||||||
 | 
					    extends Mage_Task_TaskAbstract
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    public function getName()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        return 'Listing releases [built-in]';
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function run()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        if (isset($this->_config['deploy']['releases']['enabled'])) {
 | 
				
			||||||
 | 
					            if ($this->_config['deploy']['releases']['enabled'] == 'true') {
 | 
				
			||||||
 | 
					                if (isset($this->_config['deploy']['releases']['directory'])) {
 | 
				
			||||||
 | 
					                    $releasesDirectory = $this->_config['deploy']['releases']['directory'];
 | 
				
			||||||
 | 
					                } else {
 | 
				
			||||||
 | 
					                    $releasesDirectory = 'releases';
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                if (isset($this->_config['deploy']['releases']['symlink'])) {
 | 
				
			||||||
 | 
					                    $symlink = $this->_config['deploy']['releases']['symlink'];
 | 
				
			||||||
 | 
					                } else {
 | 
				
			||||||
 | 
					                    $symlink = 'current';
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                Mage_Console::output('Releases available on <dark_gray>' . $this->_config['deploy']['host'] . '</dark_gray>');
 | 
				
			||||||
 | 
					                
 | 
				
			||||||
 | 
					                $output = '';
 | 
				
			||||||
 | 
					                $result = $this->_runRemoteCommand('ls -1 ' . $releasesDirectory, $output);
 | 
				
			||||||
 | 
					                $releases = ($output == '') ? array() : explode(PHP_EOL, $output);
 | 
				
			||||||
 | 
					                
 | 
				
			||||||
 | 
					                if (count($releases) == 0) {
 | 
				
			||||||
 | 
					                    Mage_Console::output('<dark_gray>No releases available</dark_gray> ... ', 2);
 | 
				
			||||||
 | 
					                } else {
 | 
				
			||||||
 | 
					                    rsort($releases);
 | 
				
			||||||
 | 
					                    foreach ($releases as $releaseIndex => $releaseDate) {
 | 
				
			||||||
 | 
					                        Mage_Console::output('Index: ' . $releaseIndex . ' - <purple>' . $releaseDate . '</purple>', 2);                        
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                return $result;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            } else {
 | 
				
			||||||
 | 
					                return false;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					            return false;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										49
									
								
								Mage/Task/Releases.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										49
									
								
								Mage/Task/Releases.php
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,49 @@
 | 
				
			|||||||
 | 
					<?php
 | 
				
			||||||
 | 
					class Mage_Task_Releases
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    private $_config = null;
 | 
				
			||||||
 | 
					    private $_action = null;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    public function setAction($action)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $this->_action = $action;
 | 
				
			||||||
 | 
					        return $this;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    public function getAction()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        return $this->_action;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    public function run(Mage_Config $config)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $this->_config = $config;
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        // Run Tasks for Deployment
 | 
				
			||||||
 | 
					        $hosts = $config->getHosts();
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        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);
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					            foreach ($hosts as $host) {
 | 
				
			||||||
 | 
					                $taskConfig = $config->getConfig($host);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                switch ($this->getAction()) {
 | 
				
			||||||
 | 
					                    case 'list':
 | 
				
			||||||
 | 
					                        $task = Mage_Task_Factory::get('releases/list', $taskConfig);
 | 
				
			||||||
 | 
					                        $task->init();
 | 
				
			||||||
 | 
					                        $result = $task->run();
 | 
				
			||||||
 | 
					                        break;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    private function _listReleases()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -16,18 +16,18 @@ abstract class Mage_Task_TaskAbstract
 | 
				
			|||||||
    {
 | 
					    {
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    protected final function _runLocalCommand($command)
 | 
					    protected final function _runLocalCommand($command, &$output = null)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        return Mage_Console::executeCommand($command);
 | 
					        return Mage_Console::executeCommand($command, $output);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    protected final function _runRemoteCommand($command)
 | 
					    protected final function _runRemoteCommand($command, &$output = null)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        $localCommand = 'ssh '
 | 
					        $localCommand = 'ssh '
 | 
				
			||||||
                      . $this->_config['deploy']['deployment']['user'] . '@' . $this->_config['deploy']['host'] . ' '
 | 
					                      . $this->_config['deploy']['deployment']['user'] . '@' . $this->_config['deploy']['host'] . ' '
 | 
				
			||||||
                      . '"cd ' . $this->_config['deploy']['deployment']['to'] . ' && '
 | 
					                      . '"cd ' . $this->_config['deploy']['deployment']['to'] . ' && '
 | 
				
			||||||
                      . $command . '"';
 | 
					                      . $command . '"';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return $this->_runLocalCommand($localCommand);
 | 
					        return $this->_runLocalCommand($localCommand, $output);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -1 +1,9 @@
 | 
				
			|||||||
#global settings
 | 
					#global settings
 | 
				
			||||||
 | 
					mail:
 | 
				
			||||||
 | 
					  from: andresmontanez@gmail.com
 | 
				
			||||||
 | 
					  password: xxxxxx
 | 
				
			||||||
 | 
					  smtp: smtp.gmail.com
 | 
				
			||||||
 | 
					  to:
 | 
				
			||||||
 | 
					    - andresmontanez@gmail.com
 | 
				
			||||||
 | 
					    - andres.montanez@zenreworks.com
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user