Releases List.

This commit is contained in:
Andrs Montaez
2012-01-01 13:36:41 -02:00
parent b8b054757a
commit dd46e4d637
5 changed files with 134 additions and 5 deletions
+50
View 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
View 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()
{
}
}
+4 -4
View File
@@ -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 '
. $this->_config['deploy']['deployment']['user'] . '@' . $this->_config['deploy']['host'] . ' '
. '"cd ' . $this->_config['deploy']['deployment']['to'] . ' && '
. $command . '"';
return $this->_runLocalCommand($localCommand);
return $this->_runLocalCommand($localCommand, $output);
}
}