[
https://issues.apache.org/jira/browse/CB-13145?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16144562#comment-16144562
]
ASF GitHub Bot commented on CB-13145:
-------------------------------------
Github user stevengill commented on a diff in the pull request:
https://github.com/apache/cordova-lib/pull/590#discussion_r135664127
--- Diff: src/cordova/plugin/util.js ---
@@ -35,3 +40,39 @@ function saveToConfigXmlOn (config_json, options) {
var autosave = config_json.auto_save_plugins || false;
return autosave || options.save;
}
+
+/*
+ * Merges cli and config.xml variables.
+ *
+ * @param {object} pluginInfo
+ * @param {object} config.xml
+ * @param {object} options
+ *
+ * @return {object} object containing the new merged variables
+ */
+
+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));
--- End diff --
get rid of Q dep
> Create playservices version preference in config.xml
> ----------------------------------------------------
>
> Key: CB-13145
> URL: https://issues.apache.org/jira/browse/CB-13145
> Project: Apache Cordova
> Issue Type: Bug
> Components: cordova-lib
> Reporter: Steve Gill
> Labels: backlog, tools-next
> Fix For: [email protected]
>
>
> We are seeing an issue in the community of two plugins using different
> versions of google play services. This causes gradle to error out. We are
> running into this with the phonegap-push-plugin.
> Potential solution:
> We could create an Android only preference called PlayServicesVersion in
> config.xml which would control the version of Play Services used for the
> entire project.
> In config.xml:
> {code}
> <preference name="PlayServicesVersion" value="11.0.1"/>
> {code}
> Then if the push plugin wanted to include the FCM libraries in it's
> plugin.xml it would do:
> <framework src="com.google.firebase:firebase-messaging:$PlayServicesVersion"/>
> and the cordova-plugin-google-analytics wanted to include Play Services in
> it's plugin.xml it would do:
> {code}
> <framework
> src="com.google.android.gms:play-services-analytics:$PlayServicesVersion" />
> {code}
> they would both use the same version of Play Services. This gets around the
> problem of plugins using + in the framework tag and having two plugins pin
> different versions of Play Services.
> The + wildcard fails to compile with the following error:
> {code}
> > Failed to apply plugin [id 'com.google.gms.google-services']
> > For input string: "+"
> {code}
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]