cordova-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From TimBarham <...@git.apache.org>
Subject [GitHub] cordova-lib pull request: New plugin version selection implementat...
Date Thu, 18 Feb 2016 11:08:29 GMT
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 infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@cordova.apache.org
For additional commands, e-mail: dev-help@cordova.apache.org


Mime
View raw message