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

Reply via email to