You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by an...@apache.org on 2013/05/07 03:20:34 UTC

[3/4] git commit: fixing uninstall reversion

fixing uninstall reversion


Project: http://git-wip-us.apache.org/repos/asf/cordova-plugman/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-plugman/commit/e621a853
Tree: http://git-wip-us.apache.org/repos/asf/cordova-plugman/tree/e621a853
Diff: http://git-wip-us.apache.org/repos/asf/cordova-plugman/diff/e621a853

Branch: refs/heads/master
Commit: e621a8534483f1f68e1a9c5406701e06a60b8d8a
Parents: 4be5ea0
Author: Anis Kadri <an...@apache.org>
Authored: Mon May 6 18:20:04 2013 -0700
Committer: Anis Kadri <an...@apache.org>
Committed: Mon May 6 18:20:04 2013 -0700

----------------------------------------------------------------------
 src/uninstall.js |   18 +++++++++++++-----
 1 files changed, 13 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-plugman/blob/e621a853/src/uninstall.js
----------------------------------------------------------------------
diff --git a/src/uninstall.js b/src/uninstall.js
index e071934..49fc1c7 100644
--- a/src/uninstall.js
+++ b/src/uninstall.js
@@ -1,7 +1,6 @@
 var path = require('path'),
     fs   = require('fs'),
     et   = require('elementtree'),
-    platform_modules = require('./platforms'),
     config_changes = require('./util/config-changes');
 
 module.exports = function uninstallPlugin(platform, project_dir, name, plugins_dir, cli_variables, callback) {
@@ -42,6 +41,7 @@ function runUninstall(platform, project_dir, plugin_dir, plugins_dir, cli_variab
         return;
     }
 
+    var platform_modules = require('./platforms');
     // parse plugin.xml into transactions
     var handler = platform_modules[platform];
     var txs = [];
@@ -85,15 +85,23 @@ function runUninstall(platform, project_dir, plugin_dir, plugins_dir, cli_variab
     handler.uninstall(txs, plugin_id, project_dir, plugin_dir, function(err) {
         if (err) {
             // FAIL
-            // TODO revert assets here too
+            var issue = '';
+            try {
+                for(var i = 0, j = uninstalledAssets.length ; i < j ; i++) {
+                    var src = uninstalledAssets[i].attrib['src'],
+                           target = uninstalledAssets[i].attrib['target'];
+                    common.copyFile(plugin_dir, src, handler.www_dir(project_dir), target);
+                }
+            } catch(err2) {
+                issue += 'Could not revert assets' + err2.stack + '\n';
+            }
             if (err. transactions) {
                 handler.install(err.transactions.executed, plugin_id, project_dir, plugin_dir, cli_variables, function(superr) {
-                    var issue = '';
                     if (superr) {
                         // Even reversion failed. super fail.
-                        issue = 'Uninstall failed, then reversion of uninstallation failed. Sorry :(. Uninstalation issue: ' + err.stack + ', reversion issue: ' + superr.stack;
+                        issue += 'Uninstall failed, then reversion of uninstallation failed. Sorry :(. Uninstalation issue: ' + err.stack + ', reversion issue: ' + superr.stack;
                     } else {
-                        issue = 'Uninstall failed, plugin reversion successful so you should be good to go. Uninstallation issue: ' + err.stack;
+                        issue += 'Uninstall failed, plugin reversion successful so you should be good to go. Uninstallation issue: ' + err.stack;
                     }
                     var error = new Error(issue);
                     if (callback) callback(error);