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 2015/09/10 08:27:56 UTC
cordova-lib git commit: CB-9631 Save plugin to config.xml only if
installation succeeds
Repository: cordova-lib
Updated Branches:
refs/heads/master 04310fb70 -> d104e3939
CB-9631 Save plugin to config.xml only if installation succeeds
Project: http://git-wip-us.apache.org/repos/asf/cordova-lib/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-lib/commit/d104e393
Tree: http://git-wip-us.apache.org/repos/asf/cordova-lib/tree/d104e393
Diff: http://git-wip-us.apache.org/repos/asf/cordova-lib/diff/d104e393
Branch: refs/heads/master
Commit: d104e393988f3a71510f99a113236555b3e0f07f
Parents: 04310fb
Author: Vladimir Kotikov <v-...@microsoft.com>
Authored: Wed Sep 9 17:58:21 2015 +0300
Committer: Vladimir Kotikov <v-...@microsoft.com>
Committed: Wed Sep 9 19:00:57 2015 +0300
----------------------------------------------------------------------
cordova-lib/spec-cordova/ConfigParser.spec.js | 26 +++++++-------
cordova-lib/src/configparser/ConfigParser.js | 16 ++++++---
cordova-lib/src/cordova/plugin.js | 41 ++++++++++------------
3 files changed, 41 insertions(+), 42 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cordova-lib/blob/d104e393/cordova-lib/spec-cordova/ConfigParser.spec.js
----------------------------------------------------------------------
diff --git a/cordova-lib/spec-cordova/ConfigParser.spec.js b/cordova-lib/spec-cordova/ConfigParser.spec.js
index f3d0b8f..a888cf4 100644
--- a/cordova-lib/spec-cordova/ConfigParser.spec.js
+++ b/cordova-lib/spec-cordova/ConfigParser.spec.js
@@ -170,20 +170,18 @@ describe('config.xml parser', function () {
});
it('should allow adding features with params', function(){
cfg.addPlugin({name:'aplugin'}, [{name:'paraname',value:'paravalue'}]);
- var plugins = cfg.doc.findall('plugin');
- var plugin = (function(){
- var i = plugins.length;
- var f;
- while (--i >= 0) {
- f = plugins[i];
- if ('aplugin' === f.attrib.name) return f;
- }
- return undefined;
- })();
- expect(plugin).toBeDefined();
- var variables = plugin.findall('variable');
- expect(variables[0].attrib.name).toEqual('paraname');
- expect(variables[0].attrib.value).toEqual('paravalue');
+ // Additional check for new parameters syntax
+ cfg.addPlugin({name:'bplugin'}, {paraname: 'paravalue'});
+ var plugins = cfg.doc.findall('plugin')
+ .filter(function (plugin) {
+ return plugin.attrib.name === 'aplugin' || plugin.attrib.name === 'bplugin';
+ });
+ expect(plugins.length).toBe(2);
+ plugins.forEach(function (plugin) {
+ var variables = plugin.findall('variable');
+ expect(variables[0].attrib.name).toEqual('paraname');
+ expect(variables[0].attrib.value).toEqual('paravalue');
+ });
});
it('should be able to read legacy feature entries with a version', function(){
var plugin = cfg.getPlugin('org.apache.cordova.legacyfeatureversion');
http://git-wip-us.apache.org/repos/asf/cordova-lib/blob/d104e393/cordova-lib/src/configparser/ConfigParser.js
----------------------------------------------------------------------
diff --git a/cordova-lib/src/configparser/ConfigParser.js b/cordova-lib/src/configparser/ConfigParser.js
index 5d2bb83..9dcccb5 100644
--- a/cordova-lib/src/configparser/ConfigParser.js
+++ b/cordova-lib/src/configparser/ConfigParser.js
@@ -301,7 +301,7 @@ ConfigParser.prototype = {
* @name addPlugin
* @function
* @param {object} attributes name and spec are supported
- * @param {Array} variables name, value
+ * @param {Array|object} variables name, value or arbitary object
*/
addPlugin: function (attributes, variables) {
if (!attributes && !attributes.name) return;
@@ -310,12 +310,18 @@ ConfigParser.prototype = {
if (attributes.spec) {
el.attrib.spec = attributes.spec;
}
+
+ // support arbitrary object as variables source
+ if (variables && typeof variables === 'object' && !Array.isArray(variables)) {
+ variables = Object.keys(variables)
+ .map(function (variableName) {
+ return {name: variableName, value: variables[variableName]};
+ });
+ }
+
if (variables) {
variables.forEach(function (variable) {
- var v = new et.Element('variable');
- v.attrib.name = variable.name;
- v.attrib.value = variable.value;
- el.append(v);
+ el.append(new et.Element('variable', { name: variable.name, value: variable.value }));
});
}
this.doc.getroot().append(el);
http://git-wip-us.apache.org/repos/asf/cordova-lib/blob/d104e393/cordova-lib/src/cordova/plugin.js
----------------------------------------------------------------------
diff --git a/cordova-lib/src/cordova/plugin.js b/cordova-lib/src/cordova/plugin.js
index 066bf07..d2a44b4 100644
--- a/cordova-lib/src/cordova/plugin.js
+++ b/cordova-lib/src/cordova/plugin.js
@@ -150,28 +150,6 @@ module.exports = function plugin(command, targets, opts) {
return pluginInfoProvider.get(directory);
});
})
- .then(function(pluginInfo){
- // save to config.xml
- if(saveToConfigXmlOn(config_json, opts)){
-
- var attributes = {};
- attributes.name = pluginInfo.id;
-
- var src = parseSource(target, opts);
- attributes.spec = src ? src : '~' + pluginInfo.version;
-
- var variables = Object.keys(opts.cli_variables || [])
- .map(function (variableName) {
- return {name: variableName, value: opts.cli_variables[variableName]};
- });
-
- cfg.removePlugin(pluginInfo.id);
- cfg.addPlugin(attributes, variables);
- cfg.write();
- events.emit('results', 'Saved plugin info for "' + pluginInfo.id + '" to config.xml');
- }
- return pluginInfo;
- })
.then(function(pluginInfo) {
// Validate top-level required variables
var pluginVariables = pluginInfo.getPreferences();
@@ -201,7 +179,24 @@ module.exports = function plugin(command, targets, opts) {
events.emit('verbose', 'Calling plugman.install on plugin "' + pluginInfo.dir + '" for platform "' + platform);
return plugman.raw.install(platform, platformRoot, path.basename(pluginInfo.dir), pluginPath, options);
- });
+ })
+ .thenResolve(pluginInfo);
+ })
+ .then(function(pluginInfo){
+ // save to config.xml
+ if(saveToConfigXmlOn(config_json, opts)){
+ var src = parseSource(target, opts);
+ var attributes = {
+ name: pluginInfo.id,
+ spec: src ? src : '~' + pluginInfo.version
+ };
+
+ cfg.removePlugin(pluginInfo.id);
+ cfg.addPlugin(attributes, opts.cli_variables);
+ cfg.write();
+
+ events.emit('results', 'Saved plugin info for "' + pluginInfo.id + '" to config.xml');
+ }
});
}, Q()); // end Q.all
}).then(function() {
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cordova.apache.org
For additional commands, e-mail: commits-help@cordova.apache.org