Repository: cordova-lib
Updated Branches:
  refs/heads/master 6b98390ec -> ad31610fa


CB-13145: pass full options to plugman uninstall


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

Branch: refs/heads/master
Commit: 295f29c0ae83d9512f7ecbafc115861c76af6460
Parents: 6b98390
Author: Steve Gill <[email protected]>
Authored: Tue Aug 22 21:39:24 2017 -0700
Committer: Steve Gill <[email protected]>
Committed: Tue Aug 29 22:23:30 2017 -0700

----------------------------------------------------------------------
 src/cordova/plugin/add.js    | 24 ++----------------------
 src/cordova/plugin/remove.js | 17 +++++++++++++----
 src/cordova/plugin/util.js   | 29 +++++++++++++++++++++++++++++
 3 files changed, 44 insertions(+), 26 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-lib/blob/295f29c0/src/cordova/plugin/add.js
----------------------------------------------------------------------
diff --git a/src/cordova/plugin/add.js b/src/cordova/plugin/add.js
index 203cf09..e6f8283 100644
--- a/src/cordova/plugin/add.js
+++ b/src/cordova/plugin/add.js
@@ -99,28 +99,8 @@ function add (projectRoot, hooksRunner, opts) {
                 }).then(function (directory) {
                     return pluginInfoProvider.get(directory);
                 }).then(function (pluginInfo) {
-                    // Validate top-level required variables
-                    var pluginVariables = pluginInfo.getPreferences();
-                    opts.cli_variables = opts.cli_variables || {};
-                    var pluginEntry = cfg.getPlugin(pluginInfo.id);
-                    // Get variables from config.xml
-                    var configVariables = pluginEntry ? pluginEntry.variables 
: {};
-                    // Add config variable if it's missing in cli_variables
-                    Object.keys(configVariables).forEach(function (variable) {
-                        opts.cli_variables[variable] = 
opts.cli_variables[variable] || configVariables[variable];
-                    });
-                    var missingVariables = Object.keys(pluginVariables)
-                        .filter(function (variableName) {
-                            // discard variables with default value
-                            return !(pluginVariables[variableName] || 
opts.cli_variables[variableName]);
-                        });
-
-                    if (missingVariables.length) {
-                        events.emit('verbose', 'Removing ' + pluginInfo.dir + 
' because mandatory plugin variables were missing.');
-                        shell.rm('-rf', pluginInfo.dir);
-                        var msg = 'Variable(s) missing (use: --variable ' + 
missingVariables.join('=value --variable ') + '=value).';
-                        return Q.reject(new CordovaError(msg));
-                    }
+                    
+                    plugin_util.mergeVariables(pluginInfo, cfg, opts);
 
                     // Iterate (in serial!) over all platforms in the project 
and install the plugin.
                     return chainMap(platformList, function (platform) {

http://git-wip-us.apache.org/repos/asf/cordova-lib/blob/295f29c0/src/cordova/plugin/remove.js
----------------------------------------------------------------------
diff --git a/src/cordova/plugin/remove.js b/src/cordova/plugin/remove.js
index 6cbd930..76ad091 100644
--- a/src/cordova/plugin/remove.js
+++ b/src/cordova/plugin/remove.js
@@ -28,6 +28,7 @@ var metadata = require('../../plugman/util/metadata');
 var Q = require('q');
 var path = require('path');
 var fs = require('fs');
+var PluginInfoProvider = require('cordova-common').PluginInfoProvider;
 
 module.exports = remove;
 module.exports.validatePluginId = validatePluginId;
@@ -41,10 +42,14 @@ function remove (projectRoot, targets, hooksRunner, opts) {
     var plugins = cordova_util.findPlugins(pluginPath);
     var platformList = cordova_util.listPlatforms(projectRoot);
     var shouldRunPrepare = false;
+    var xml = cordova_util.projectConfig(projectRoot);
+    var cfg = new ConfigParser(xml);
 
     opts.cordova = { plugins: cordova_util.findPlugins(pluginPath) };
     return hooksRunner.fire('before_plugin_rm', opts)
         .then(function () {
+            var pluginInfoProvider = new PluginInfoProvider();
+            var cli_variables;
             return opts.plugins.reduce(function (soFar, target) {
                 var validatedPluginId = 
module.exports.validatePluginId(target, plugins);
                 if (!validatedPluginId) {
@@ -59,11 +64,15 @@ function remove (projectRoot, targets, hooksRunner, opts) {
                 return platformList.reduce(function (soFar, platform) {
                     return soFar.then(function () {
                         var platformRoot = path.join(projectRoot, 'platforms', 
platform);
+                        var directory = path.join(pluginPath, target);
+                        var pluginInfo = pluginInfoProvider.get(directory);
                         events.emit('verbose', 'Calling plugman.uninstall on 
plugin "' + target + '" for platform "' + platform + '"');
-                        var options = {
-                            force: opts.force || false
-                        };
-                        return plugman.uninstall.uninstallPlatform(platform, 
platformRoot, target, pluginPath, options)
+                        opts.force = opts.force || false;
+                        cli_variables = opts.cli_variables || {};
+
+                        plugin_util.mergeVariables(pluginInfo, cfg, opts);
+
+                        return plugman.uninstall.uninstallPlatform(platform, 
platformRoot, target, pluginPath, opts)
                             .then(function (didPrepare) {
                                 // If platform does not returned anything 
we'll need
                                 // to trigger a prepare after all plugins 
installed

http://git-wip-us.apache.org/repos/asf/cordova-lib/blob/295f29c0/src/cordova/plugin/util.js
----------------------------------------------------------------------
diff --git a/src/cordova/plugin/util.js b/src/cordova/plugin/util.js
index 0da0fb7..d6bfeec 100644
--- a/src/cordova/plugin/util.js
+++ b/src/cordova/plugin/util.js
@@ -22,6 +22,7 @@ var PluginInfoProvider = 
require('cordova-common').PluginInfoProvider;
 
 module.exports.saveToConfigXmlOn = saveToConfigXmlOn;
 module.exports.getInstalledPlugins = getInstalledPlugins;
+module.exports.mergeVariables = mergeVariables;
 
 function getInstalledPlugins (projectRoot) {
     var pluginsDir = path.join(projectRoot, 'plugins');
@@ -35,3 +36,31 @@ function saveToConfigXmlOn (config_json, options) {
     var autosave = config_json.auto_save_plugins || false;
     return autosave || options.save;
 }
+
+// merges cli variables and config.xml (cfg) variables
+// used when adding and removing
+function mergeVariables (pluginInfo, cfg, opts) {
+    // Validate top-level required variables
+    var pluginVariables = pluginInfo.getPreferences();
+    opts.cli_variables = opts.cli_variables || {};
+    var pluginEntry = cfg.getPlugin(pluginInfo.id);
+    // Get variables from config.xml
+    var configVariables = pluginEntry ? pluginEntry.variables : {};
+    // Add config variable if it's missing in cli_variables
+    Object.keys(configVariables).forEach(function (variable) {
+        opts.cli_variables[variable] = opts.cli_variables[variable] || 
configVariables[variable];
+    });
+    var missingVariables = Object.keys(pluginVariables)
+        .filter(function (variableName) {
+            // discard variables with default value
+            return !(pluginVariables[variableName] || 
opts.cli_variables[variableName]);
+        });
+
+    if (missingVariables.length) {
+        events.emit('verbose', 'Removing ' + pluginInfo.dir + ' because 
mandatory plugin variables were missing.');
+        shell.rm('-rf', pluginInfo.dir);
+        var msg = 'Variable(s) missing (use: --variable ' + 
missingVariables.join('=value --variable ') + '=value).';
+        return Q.reject(new CordovaError(msg));
+    }
+
+}


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to