You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by st...@apache.org on 2015/02/13 01:54:06 UTC

[10/12] cordova-lib git commit: CB-8420 Make `cordova plugin add FOO` use version from config.xml (close #162)

CB-8420 Make `cordova plugin add FOO` use version from config.xml (close #162)


Project: http://git-wip-us.apache.org/repos/asf/cordova-lib/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-lib/commit/629b8867
Tree: http://git-wip-us.apache.org/repos/asf/cordova-lib/tree/629b8867
Diff: http://git-wip-us.apache.org/repos/asf/cordova-lib/diff/629b8867

Branch: refs/heads/CB-8416
Commit: 629b8867cd44a4d89b5dadd17e1b33f8cbf8b120
Parents: 36194fa
Author: Omar Mefire <om...@microsoft.com>
Authored: Fri Feb 6 18:03:46 2015 -0800
Committer: Andrew Grieve <ag...@chromium.org>
Committed: Wed Feb 11 15:44:03 2015 -0500

----------------------------------------------------------------------
 cordova-lib/src/cordova/platform.js | 18 ++----------------
 cordova-lib/src/cordova/plugin.js   | 23 +++++++++++++++++++++++
 cordova-lib/src/cordova/util.js     | 18 +++++++++++++++++-
 3 files changed, 42 insertions(+), 17 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-lib/blob/629b8867/cordova-lib/src/cordova/platform.js
----------------------------------------------------------------------
diff --git a/cordova-lib/src/cordova/platform.js b/cordova-lib/src/cordova/platform.js
index 214dd61..a1eee41 100644
--- a/cordova-lib/src/cordova/platform.js
+++ b/cordova-lib/src/cordova/platform.js
@@ -17,7 +17,6 @@
     under the License.
 */
 
-var url = require('url');
 var config            = require('./config'),
     cordova           = require('./cordova'),
     cordova_util      = require('./util'),
@@ -103,7 +102,7 @@ function addHelper(cmd, hooksRunner, projectRoot, targets, opts) {
                 }
                 if (version) {
                     var maybeDir = cordova_util.fixRelativePath(version);
-                    if (isDirectory(maybeDir)) {
+                    if (cordova_util.isDirectory(maybeDir)) {
                         return getPlatformDetailsFromDir(maybeDir, platform);
                     }
                 }
@@ -175,25 +174,12 @@ function addHelper(cmd, hooksRunner, projectRoot, targets, opts) {
     });
 }
 
-function isDirectory(dir) {
-    try {
-	return fs.lstatSync(dir).isDirectory();
-    } catch(e) {
-	return false;
-    }
-}
-
-function isUrl(value) {
-    var u = value && url.parse(value);
-    return !!(u && u.protocol && u.protocol.length > 1); // Account for windows c:/ paths
-}
-
 // Downloads via npm or via git clone (tries both)
 // Returns a Promise
 function downloadPlatform(projectRoot, platform, version, opts) {
     var target = version ? (platform + '@' + version) : platform;
     return Q().then(function() {
-        if (isUrl(version)) {
+        if (cordova_util.isUrl(version)) {
             events.emit('log', 'git cloning: ' + version);
             return lazy_load.git_clone(version);
         }

http://git-wip-us.apache.org/repos/asf/cordova-lib/blob/629b8867/cordova-lib/src/cordova/plugin.js
----------------------------------------------------------------------
diff --git a/cordova-lib/src/cordova/plugin.js b/cordova-lib/src/cordova/plugin.js
index b044a2f..7f34ddd 100644
--- a/cordova-lib/src/cordova/plugin.js
+++ b/cordova-lib/src/cordova/plugin.js
@@ -91,6 +91,8 @@ module.exports = function plugin(command, targets, opts) {
                 return Q.reject(new CordovaError('No plugin specified. Please specify a plugin to add. See `'+cordova_util.binname+' plugin search`.'));
             }
 
+            var xml = cordova_util.projectConfig(projectRoot);
+            var cfg = new ConfigParser(xml);
             var config_json = config.read(projectRoot);
             var searchPath = config_json.plugin_search_path || [];
             if (typeof opts.searchpath == 'string') {
@@ -114,6 +116,22 @@ module.exports = function plugin(command, targets, opts) {
                             target = target.substring(0, target.length - 1);
                         }
 
+                        var parts = target.split('@');
+                        var id = parts[0];
+                        var version = parts[1];
+
+                        // If no version is specified, retrieve the version 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 {
+                                target = ver ? (id + '@' + ver) : target;
+                            }
+                        }
+
                         // Fetch the plugin first.
                         events.emit('verbose', 'Calling plugman.fetch on plugin "' + target + '"');
                         return plugman.raw.fetch(target, pluginsDir, { searchpath: searchPath, noregistry: opts.noregistry, link: opts.link, pluginInfoProvider: pluginInfoProvider});
@@ -230,6 +248,11 @@ module.exports = function plugin(command, targets, opts) {
     }
 };
 
+function getVersionFromConfigFile(plugin, cfg){
+    var feature = cfg.getFeature(plugin);
+    return feature && feature.params.version; 
+}
+
 function list(projectRoot, hooksRunner) {
     var pluginsList = [];
     return hooksRunner.fire('before_plugin_ls')

http://git-wip-us.apache.org/repos/asf/cordova-lib/blob/629b8867/cordova-lib/src/cordova/util.js
----------------------------------------------------------------------
diff --git a/cordova-lib/src/cordova/util.js b/cordova-lib/src/cordova/util.js
index 700f77a..4382b66 100644
--- a/cordova-lib/src/cordova/util.js
+++ b/cordova-lib/src/cordova/util.js
@@ -21,7 +21,8 @@
 var fs            = require('fs'),
     path          = require('path'),
     CordovaError  = require('../CordovaError'),
-    shell         = require('shelljs');
+    shell         = require('shelljs'),
+    url           = require('url');
 
 // Global configuration paths
 var global_config_path = process.env['CORDOVA_HOME'];
@@ -52,6 +53,13 @@ exports.preProcessOptions = preProcessOptions;
 exports.addModuleProperty = addModuleProperty;
 exports.getOrigWorkingDirectory = getOrigWorkingDirectory;
 exports.fixRelativePath = fixRelativePath;
+exports.isDirectory = isDirectory;
+exports.isUrl = isUrl;
+
+function isUrl(value) {
+    var u = value && url.parse(value);
+    return !!(u && u.protocol && u.protocol.length > 1); // Account for windows c:/ paths
+}
 
 function isRootDir(dir) {
     if (fs.existsSync(path.join(dir, 'www'))) {
@@ -228,6 +236,14 @@ function preProcessOptions (inputOptions) {
     return result;
 }
 
+function isDirectory(dir) {
+    try {
+	return fs.lstatSync(dir).isDirectory();
+    } catch(e) {
+	return false;
+    }
+}
+
 // opt_wrap is a boolean: True means that a callback-based wrapper for the promise-based function
 // should be created.
 function addModuleProperty(module, symbol, modulePath, opt_wrap, opt_obj) {


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