diff --git a/Mage/Task/BuiltIn/Releases/Rollback.php b/Mage/Task/BuiltIn/Releases/Rollback.php
index 74e8ec6..08bb2d8 100644
--- a/Mage/Task/BuiltIn/Releases/Rollback.php
+++ b/Mage/Task/BuiltIn/Releases/Rollback.php
@@ -72,24 +72,28 @@ class Mage_Task_BuiltIn_Releases_Rollback
} else {
foreach ($tasksToRun as $taskName) {
- $tasks++;
- $task = Mage_Task_Factory::get($taskName, $this->_config);
- $task->init();
-
- Mage_Console::output('Running ' . $task->getName() . ' ... ', 2, false);
- $result = $task->run();
-
- if ($result == true) {
- Mage_Console::output('OK', 0);
- $completedTasks++;
- } else {
- Mage_Console::output('FAIL', 0);
+ $task = Mage_Task_Factory::get($taskName, $this->_config, true);
+ $task->init();
+ Mage_Console::output('Running ' . $task->getName() . ' ... ', 2, false);
+
+ if ($task instanceOf Mage_Task_Releases_RollbackAware) {
+ $tasks++;
+ $result = $task->run();
+
+ if ($result == true) {
+ Mage_Console::output('OK', 0);
+ $completedTasks++;
+ } else {
+ Mage_Console::output('FAIL', 0);
+ }
+ } else {
+ Mage_Console::output('SKIPPED', 0);
}
}
}
// Changing Release
- Mage_Console::output('Releasing to ' . $releaseId . ' ... ', 2, false);
+ Mage_Console::output('Running Rollback Release [id=' . $releaseId . '] ... ', 2, false);
$userGroup = '';
$resultFetch = $this->_runRemoteCommand('ls -ld ' . $rollbackTo . ' | awk \'{print \$3\":\"\$4}\'', $userGroup);
diff --git a/Mage/Task/Factory.php b/Mage/Task/Factory.php
index 34644f0..7139dec 100644
--- a/Mage/Task/Factory.php
+++ b/Mage/Task/Factory.php
@@ -5,21 +5,22 @@ class Mage_Task_Factory
*
*
* @param string $taskName
+ * @param boolean $inRollback
* @return Mage_Task_TaskAbstract
*/
- public static function get($taskName, Mage_Config $taskConfig)
+ public static function get($taskName, Mage_Config $taskConfig, $inRollback = false)
{
$instance = null;
if (strpos($taskName, '/') === false) {
Mage_Autoload::loadUserTask($taskName);
$className = 'Task_' . ucfirst($taskName);
- $instance = new $className($taskConfig);
+ $instance = new $className($taskConfig, $inRollback);
} else {
$taskName = str_replace(' ', '_', ucwords(str_replace('/', ' ', $taskName)));
$className = 'Mage_Task_BuiltIn_' . $taskName;
- $instance = new $className($taskConfig);
+ $instance = new $className($taskConfig, $inRollback);
}
assert($instance instanceOf Mage_Task_TaskAbstract);
diff --git a/Mage/Task/Releases.php b/Mage/Task/Releases.php
index 4275360..fb93518 100644
--- a/Mage/Task/Releases.php
+++ b/Mage/Task/Releases.php
@@ -57,10 +57,4 @@ class Mage_Task_Releases
}
}
}
-
- private function _listReleases()
- {
-
- }
-
}
\ No newline at end of file
diff --git a/Mage/Task/Releases/RollbackAware.php b/Mage/Task/Releases/RollbackAware.php
new file mode 100644
index 0000000..dae4aa0
--- /dev/null
+++ b/Mage/Task/Releases/RollbackAware.php
@@ -0,0 +1,4 @@
+_config = $config;
+ $this->_inRollback = $inRollback;
+ }
+
+ public function inRollback()
+ {
+ return $this->_inRollback;
}
public function init()
diff --git a/docs/example-config/.mage/config/environment/production.yaml b/docs/example-config/.mage/config/environment/production.yaml
index 5874fb1..795417e 100644
--- a/docs/example-config/.mage/config/environment/production.yaml
+++ b/docs/example-config/.mage/config/environment/production.yaml
@@ -20,4 +20,6 @@ tasks:
- scm/update
on-deploy:
- privileges
+ - sampleTask
+ - sampleTaskRollbackAware
#post-deploy:
\ No newline at end of file
diff --git a/docs/example-config/.mage/config/environment/staging.yaml b/docs/example-config/.mage/config/environment/staging.yaml
index 97b604a..139669a 100644
--- a/docs/example-config/.mage/config/environment/staging.yaml
+++ b/docs/example-config/.mage/config/environment/staging.yaml
@@ -10,4 +10,6 @@ tasks:
- scm/update
on-deploy:
- privileges
+ - sampleTask
+ - sampleTaskRollbackAware
#post-deploy:
\ No newline at end of file
diff --git a/docs/example-config/.mage/tasks/SampleTask.php b/docs/example-config/.mage/tasks/SampleTask.php
new file mode 100644
index 0000000..5664e52
--- /dev/null
+++ b/docs/example-config/.mage/tasks/SampleTask.php
@@ -0,0 +1,14 @@
+inRollback()) {
+ return 'A Sample Task aware of rollbacks [in rollback]';
+ } else {
+ return 'A Sample Task aware of rollbacks [not in rollback]';
+ }
+ }
+
+ public function run()
+ {
+ return true;
+ }
+}
\ No newline at end of file