You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by br...@apache.org on 2013/05/28 22:25:37 UTC

[3/3] git commit: Refactor uninstall to use an options object instead of many parameters

Refactor uninstall to use an options object instead of many parameters


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

Branch: refs/heads/master
Commit: b3f21f377b381adc469df4f70bb96537ff6d4787
Parents: a554dfe
Author: Braden Shepherdson <br...@gmail.com>
Authored: Tue May 28 15:23:24 2013 -0400
Committer: Braden Shepherdson <br...@gmail.com>
Committed: Tue May 28 15:23:24 2013 -0400

----------------------------------------------------------------------
 main.js          |    2 +-
 src/uninstall.js |   23 ++++++++++++++++-------
 2 files changed, 17 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-plugman/blob/b3f21f37/main.js
----------------------------------------------------------------------
diff --git a/main.js b/main.js
index 4b2f656..3589496 100755
--- a/main.js
+++ b/main.js
@@ -63,7 +63,7 @@ else if (!cli_opts.platform || !cli_opts.project || !cli_opts.plugin) {
     printUsage();
 }
 else if (cli_opts.uninstall) {
-    plugman.uninstall(cli_opts.platform, cli_opts.project, cli_opts.plugin, plugins_dir, {}, cli_opts.www);
+    plugman.uninstall(cli_opts.platform, cli_opts.project, cli_opts.plugin, plugins_dir, { www_dir: cli_opts.www });
 }
 else {
     var cli_variables = {}

http://git-wip-us.apache.org/repos/asf/cordova-plugman/blob/b3f21f37/src/uninstall.js
----------------------------------------------------------------------
diff --git a/src/uninstall.js b/src/uninstall.js
index 947426f..4426af8 100644
--- a/src/uninstall.js
+++ b/src/uninstall.js
@@ -9,7 +9,8 @@ var path = require('path'),
     underscore = require('underscore'),
     platform_modules = require('./platforms');
 
-module.exports = function uninstallPlugin(platform, project_dir, id, plugins_dir, cli_variables, www_dir, callback) {
+// possible options: cli_variables, www_dir
+module.exports = function uninstallPlugin(platform, project_dir, id, plugins_dir, options, callback) {
     if (!platform_modules[platform]) {
         var err = new Error(platform + " not supported.");
         if (callback) callback(err);
@@ -28,15 +29,18 @@ module.exports = function uninstallPlugin(platform, project_dir, id, plugins_dir
 
     var current_stack = new action_stack();
 
-    runUninstall(current_stack, platform, project_dir, plugin_dir, plugins_dir, cli_variables, www_dir, true, callback);
+    options.is_top_level = true;
+    runUninstall(current_stack, platform, project_dir, plugin_dir, plugins_dir, options, callback);
 };
 
-function runUninstall(actions, platform, project_dir, plugin_dir, plugins_dir, cli_variables, www_dir, is_top_level, callback) {
+// possible options: cli_variables, www_dir, is_top_level
+function runUninstall(actions, platform, project_dir, plugin_dir, plugins_dir, options, callback) {
     var xml_path     = path.join(plugin_dir, 'plugin.xml')
       , xml_text     = fs.readFileSync(xml_path, 'utf-8')
       , plugin_et    = new et.ElementTree(et.XML(xml_text))
     var name         = plugin_et.findall('name').text;
     var plugin_id    = plugin_et._root.attrib['id'];
+    options = options || {};
 
     var dependency_info = dependencies.generate_dependency_info(plugins_dir, platform);
     var graph = dependency_info.graph;
@@ -47,7 +51,7 @@ function runUninstall(actions, platform, project_dir, plugin_dir, plugins_dir, c
     tlps.forEach(function(tlp) {
         if (tlp != plugin_id) {
             var ds = graph.getChain(tlp);
-            if (is_top_level && ds.indexOf(plugin_id) > -1) {
+            if (options.is_top_level && ds.indexOf(plugin_id) > -1) {
                 var err = new Error('Another top-level plugin (' + tlp + ') relies on plugin ' + plugin_id + ', therefore aborting uninstallation.');
                 if (callback) callback(err);
                 else throw err;
@@ -62,15 +66,20 @@ function runUninstall(actions, platform, project_dir, plugin_dir, plugins_dir, c
     var danglers = underscore.difference.apply(null, diff_arr);
     if (dependents.length && danglers && danglers.length) {
         var end = n(danglers.length, function() {
-            handleUninstall(actions, platform, plugin_id, plugin_et, project_dir, www_dir, plugins_dir, plugin_dir, is_top_level, callback);
+            handleUninstall(actions, platform, plugin_id, plugin_et, project_dir, options.www_dir, plugins_dir, plugin_dir, options.is_top_level, callback);
         });
         danglers.forEach(function(dangler) {
             var dependent_path = path.join(plugins_dir, dangler);
-            runUninstall(actions, platform, project_dir, dependent_path, plugins_dir, cli_variables, www_dir, false /* TODO: should this "is_top_level" param be false for dependents? */, end);
+            var opts = {
+                www_dir: options.www_dir,
+                cli_variables: options.cli_variables,
+                is_top_level: false /* TODO: should this "is_top_level" param be false for dependents? */
+            };
+            runUninstall(actions, platform, project_dir, dependent_path, plugins_dir, opts, end);
         });
     } else {
         // this plugin can get axed by itself, gogo!
-        handleUninstall(actions, platform, plugin_id, plugin_et, project_dir, www_dir, plugins_dir, plugin_dir, is_top_level, callback);
+        handleUninstall(actions, platform, plugin_id, plugin_et, project_dir, options.www_dir, plugins_dir, plugin_dir, options.is_top_level, callback);
     }
 }