reverting changes on action failures and other minor modifications

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

Branch: refs/heads/future
Commit: 51a1f1120d41c47d058efbcf72a3d4980d8dc9df
Parents: 2aeef83
Author: Anis Kadri <[email protected]>
Authored: Mon Apr 1 17:02:52 2013 -0700
Committer: Anis Kadri <[email protected]>
Committed: Mon Apr 1 17:02:52 2013 -0700

----------------------------------------------------------------------
 plugman.js |   26 ++++++++++++++++++--------
 1 files changed, 18 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-plugman/blob/51a1f112/plugman.js
----------------------------------------------------------------------
diff --git a/plugman.js b/plugman.js
index b81cedf..c95c612 100755
--- a/plugman.js
+++ b/plugman.js
@@ -84,10 +84,11 @@ else {
 
 function printUsage() {
     platforms = known_opts.platform.join('|');
-    console.log('Usage\n---------');
-    console.log('Add a plugin:\n\t' + package.name + ' --platform <'+ 
platforms +'> --project <directory> --variable 
<preference_name>="<substituion>" --plugin <directory|git-url|name>\n');
-    console.log('Remove a plugin:\n\t' + package.name + ' --remove --platform 
<'+ platforms +'> --project <directory> --plugin <directory|git-url|name>\n');
-    console.log('List plugins:\n\t' + package.name + ' --list\n');
+    console.error('Usage\n---------');
+    console.error('Add a plugin:\n\t' + package.name + ' --platform <'+ 
platforms +'> --project <directory> --variable 
<preference_name>="<substituion>" --plugin <directory|git-url|name>\n');
+    console.error('Remove a plugin:\n\t' + package.name + ' --remove 
--platform <'+ platforms +'> --project <directory> --plugin 
<directory|git-url|name>\n');
+    console.error('List plugins:\n\t' + package.name + ' --list\n');
+    process.exit(1);
 }
 
 function execAction(action, platform, project_dir, plugin_dir, cli_variables) {
@@ -108,15 +109,24 @@ function execAction(action, platform, project_dir, 
plugin_dir, cli_variables) {
                 filtered_variables[key] = cli_variables[key]
         })
         if (missing_vars.length > 0) {
-            console.log('Variable missing: ' + missing_vars.join(", "));
+            console.error('Variable missing: ' + missing_vars.join(", "));
             return;
         }
     }
     
     // run the platform-specific function
-    platform_modules[platform].handlePlugin(action, project_dir, plugin_dir, 
plugin_et, filtered_variables);
-    
-    console.log('plugin ' + action + 'ed');
+    try {
+      platform_modules[platform].handlePlugin(action, project_dir, plugin_dir, 
plugin_et, filtered_variables);
+      console.log('plugin ' + action + 'ed');
+    } catch(e) {
+        var revert = (action == "install" ? "force-uninstall" : 
"force-install" );
+        console.error("An error occurred for action", action, ":", e.message, 
"\nTrying to revert changes...");
+        try {
+          platform_modules[platform].handlePlugin(revert, project_dir, 
plugin_dir, plugin_et, filtered_variables);
+        } catch(e) {
+          console.log("Changes might have not been reverted: "+e.message);
+        }
+    }
 }
 
 function handlePlugin(action, platform, project_dir, plugin_dir, 
cli_variables) {

Reply via email to