diff --git a/Mage/Command/BuiltIn/RollbackCommand.php b/Mage/Command/BuiltIn/RollbackCommand.php new file mode 100644 index 0000000..f852584 --- /dev/null +++ b/Mage/Command/BuiltIn/RollbackCommand.php @@ -0,0 +1,57 @@ + +* +* For the full copyright and license information, please view the LICENSE +* file that was distributed with this source code. +*/ + +namespace Mage\Command\BuiltIn; + +use Mage\Command\AbstractCommand; +use Mage\Command\RequiresEnvironment; +use Mage\Task\Factory; +use Mage\Console; + +/** + * This is an Alias of "release rollback" + * + * @author Andrés Montañez + */ +class RollbackCommand extends AbstractCommand implements RequiresEnvironment +{ + /** + * Rollback a release + * @see \Mage\Command\AbstractCommand::run() + */ + public function run() + { + $releaseId = $this->getConfig()->getArgument(1); + $lockFile = '.mage/' . $this->getConfig()->getEnvironment() . '.lock'; + if (file_exists($lockFile) && ($subcommand == 'rollback')) { + Console::output('This environment is locked!', 1, 2); + return null; + } + + // Run Tasks for Deployment + $hosts = $this->getConfig()->getHosts(); + + if (count($hosts) == 0) { + Console::output('Warning! No hosts defined, unable to get releases.', 1, 3); + + } else { + foreach ($hosts as $host) { + $this->getConfig()->setHost($host); + + $task = Factory::get('releases/rollback', $this->getConfig()); + $task->init(); + $task->setRelease($releaseId); + $result = $task->run(); + } + } + + return $result; + } +} \ No newline at end of file