Github user TimBarham commented on a diff in the pull request: https://github.com/apache/cordova-lib/pull/363#discussion_r53300134 --- Diff: cordova-lib/src/cordova/plugin.js --- @@ -154,6 +135,38 @@ module.exports = function plugin(command, targets, opts) { is_top_level: true }; + // If no version is specified, retrieve the version (or source) from config.xml + if (!version && !cordova_util.isUrl(id) && !cordova_util.isDirectory(id)) { + events.emit('verbose', 'no version specified, retrieving version from config.xml'); + var ver = getVersionFromConfigFile(id, cfg); + + if (cordova_util.isUrl(ver) || cordova_util.isDirectory(ver)) { + target = ver; + } else if (ver) { + // If version exists in config.xml, use that + target = ver ? (id + '@' + ver) : target; + } else { + // If no version is given at all, We need to decide what version to + // fetch based on the current project + return registry.info([id]) + .then(function(pluginInfo) { + return getFetchVersion(projectRoot, pluginInfo, pkgJson.version); + }) + .then(function(fetchVersion) { + // Fallback to pinned version if available + fetchVersion = fetchVersion ? fetchVersion : pkgJson.cordovaPlugins[id]; + target = fetchVersion ? (id + '@' + fetchVersion) : target; + + events.emit('verbose', 'Calling plugman.fetch on plugin "' + target + '"'); + return plugman.raw.fetch(target, pluginPath, fetchOptions); + }) + .then(function (directory) { + return pluginInfoProvider.get(directory); + }); --- End diff -- We don't want this code duplicating the code below. It's only a couple of lines now, but it leaves us open to problems later on if changes are made to what we do here. Instead, I'd suggest moving this whole `if` block (that is, `if (!version && !cordova_util.isUrl(id) && !cordova_util.isDirectory(id)) { ... }`) to a separate method that returns a promise for a version. Then you can have a single `plugman.raw.fetch()` and `pluginInfoProvider.get()` regardless of whether the operation to determine the version is sync or async.
--- If your project is set up for it, you can reply to this email and have your reply appear on GitHub as well. If your project does not have this feature enabled and wishes so, or if the feature is enabled but not working, please contact infrastructure at infrastruct...@apache.org or file a JIRA ticket with INFRA. --- --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@cordova.apache.org For additional commands, e-mail: dev-h...@cordova.apache.org