mirror of
https://github.com/hauke68/Magallanes.git
synced 2025-09-13 04:30:17 +02: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('---------------------------------');
|
||||||
|
|
||||||
@ -93,6 +105,16 @@ class Mage_Console
|
|||||||
$task = new Mage_Task_Deploy;
|
$task = new Mage_Task_Deploy;
|
||||||
$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;
|
||||||
|
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