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]
