Repository: cordova-mobile-spec
Updated Branches:
  refs/heads/master 284f1cb4a -> 859f1ebab


[CB-12186] [create script] Support passing in of `--variable` flags to plugins. 
Need to be more defensive about empty searchpath use, otherwise it fails.


Project: http://git-wip-us.apache.org/repos/asf/cordova-mobile-spec/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/cordova-mobile-spec/commit/859f1eba
Tree: http://git-wip-us.apache.org/repos/asf/cordova-mobile-spec/tree/859f1eba
Diff: http://git-wip-us.apache.org/repos/asf/cordova-mobile-spec/diff/859f1eba

Branch: refs/heads/master
Commit: 859f1ebabdba1e10c520bd1dcc9502c2b813b4a3
Parents: 284f1cb
Author: filmaj <maj....@gmail.com>
Authored: Fri Nov 25 09:23:54 2016 -0800
Committer: filmaj <maj....@gmail.com>
Committed: Fri Nov 25 09:34:38 2016 -0800

----------------------------------------------------------------------
 createmobilespec/createmobilespec.js | 45 ++++++++++++++++++++-----------
 1 file changed, 29 insertions(+), 16 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-mobile-spec/blob/859f1eba/createmobilespec/createmobilespec.js
----------------------------------------------------------------------
diff --git a/createmobilespec/createmobilespec.js 
b/createmobilespec/createmobilespec.js
index 87a3033..19a5888 100755
--- a/createmobilespec/createmobilespec.js
+++ b/createmobilespec/createmobilespec.js
@@ -62,10 +62,10 @@ function pluginAdd(pluginName, searchPath, extraFlags) {
     if (!searchPath || typeof searchPath !== "string") {
         searchPath = '';
     }
-    var command;
+    var command = cli + ' plugin add ' + pluginName;
     if (fs.existsSync(path.join(searchPath, pluginName, 'plugin.xml'))) {
         command = cli + ' plugin add ' + path.join(searchPath, pluginName);
-    } else {
+    } else if (searchPath && searchPath.length) {
         command = cli + ' plugin add ' + pluginName + ' --searchpath ' + 
searchPath;
     }
     if (extraFlags) {
@@ -114,7 +114,7 @@ var top_dir =             process.cwd() + path.sep,
                                               "www": ["www"] },
                             "firefoxos":    { "bin": ["cordova-firefoxos"],
                                               "www": ["www"] } },
-    argv = optimist.usage("\nUsage: $0 PLATFORM... [--help] [--plugman] 
[--link] [--global] [--globalplugins] [--plugins=\".\\myPluginDir\"] [--skipjs] 
[--skiplink] [directoryName]\n" +
+    argv = optimist.usage("\nUsage: $0 PLATFORM... [--help] [--plugman] 
[--link] [--global] [--globalplugins] [--plugins=\".\\myPluginDir\"] [--skipjs] 
[--skiplink] [--variable VAR=\"value\"] [directoryName]\n" +
                           "A project will be created with the mobile-spec app 
and all the core plugins.\n" +
                           "At least one platform must be specified. See the 
included README.md.\n" +
                           "\tPLATFORM: 
[--<amazon|android|blackberry10|ios|windows|wp8|firefoxos|osx>]\n" +
@@ -141,6 +141,8 @@ var top_dir =             process.cwd() + path.sep,
                    .boolean("clearnpmcache").describe("clearnpmcache", "rm -rf 
~/.npm/cache; rm -rf ~/.plugman")
                    .string("plugins").describe("plugins", "Used to explicitly 
specify the list of plugins to be installed.\n" +
                                                "Example: 
--plugins=\"cordova-plugin-device cordova-plugin-file-transfer 
my-custom-plugin\"")
+                   .string("variable").describe("variable", "Used to pass 
preferences / variables down to cordova components (like plugins).\n" +
+                                               "Example: --variable 
FILETRANSFER_SERVER_ADDRESS=\"http://yourlocal-IPAddressHere:5000\"";)
                    .boolean("skipjs").describe("skipjs", "Do not update the 
platform's cordova.js from the js git repo, use the one already present in the 
platform.\n" +
                                                "\t\t\tRarely used, generally 
to test RC releases.\n" +
                                                "\t\t\tCannot be used with 
--global because it is implied when --global is used.")
@@ -301,6 +303,16 @@ var cli = argv.global ? "cordova" : cli_local_bin;
 var projectDirName = argv._[0] || "mobilespec";
 var cli_project_dir = path.join(top_dir, projectDirName);
 var browserifyFlag = argv.browserify ? ' --browserify' : '';
+var variableFlag = '';
+// some plugins support setting config.xml <preference> elements via a 
--variable flag.
+if (argv.variable) {
+    if (argv.variable instanceof Array) {
+        // multiple variables passed in, compose them all into one string
+        variableFlag = ' ' + argv.variable.map(function(v) { return 
'--variable ' + v; }).join(' ');
+    } else {
+        variableFlag = ' --variable ' + argv.variable;
+    }
+}
 
 // Print relevant information
 if (!fs.existsSync(path.join("cordova-coho", "coho"))) {
@@ -596,35 +608,36 @@ function installPlugins() {
         // we do need local plugin-test-framework
         console.log("Installing local test framework plugins...");
         var linkPluginsFlag = (argv.link || argv.linkplugins) ? ' --link' : '';
+        var allPluginFlags = linkPluginsFlag + browserifyFlag + variableFlag;
 
         // Install mobilespec tests only if we install default list of plugins
         // If custom list of plugins is being installed, mobilespec tests can 
be listed there, if needed
         if (!argv.plugins) {
-            //pluginAdd('org.apache.cordova.mobilespec.tests', 
mobile_spec_git_dir, linkPluginsFlag + browserifyFlag);
+            //pluginAdd('org.apache.cordova.mobilespec.tests', 
mobile_spec_git_dir, allPluginFlags);
         }
-        //pluginAdd('org.apache.cordova.test.whitelist', mobile_spec_git_dir, 
linkPluginsFlag + browserifyFlag);
-        pluginAdd('org.apache.cordova.test.echo', mobile_spec_git_dir, 
linkPluginsFlag + browserifyFlag);
+        //pluginAdd('org.apache.cordova.test.whitelist', mobile_spec_git_dir, 
allPluginFlags);
+        pluginAdd('org.apache.cordova.test.echo', mobile_spec_git_dir, 
allPluginFlags);
 
-        pluginAdd('cordova-plugin-test-framework', searchPath, linkPluginsFlag 
+ browserifyFlag);
-        pluginAdd('cordova-plugin-device', searchPath, linkPluginsFlag + 
browserifyFlag);
+        pluginAdd('cordova-plugin-test-framework', searchPath, allPluginFlags);
+        pluginAdd('cordova-plugin-device', searchPath, allPluginFlags);
 
         if (argv.android) {
-            pluginAdd('cordova-plugin-whitelist', searchPath, linkPluginsFlag 
+ browserifyFlag);
+            pluginAdd('cordova-plugin-whitelist', searchPath, allPluginFlags);
         }
 
         if (argv.webview == 'crosswalk') {
-            pluginAdd('cordova-plugin-crosswalk-webview', searchPath, 
linkPluginsFlag + browserifyFlag);
+            pluginAdd('cordova-plugin-crosswalk-webview', searchPath, 
allPluginFlags);
         }
 
         plugins.forEach(function(p) {
             var sp = SEARCH_PATHS.hasOwnProperty(p) ? SEARCH_PATHS[p] : 
searchPath;
-            pluginAdd(p, sp, linkPluginsFlag + browserifyFlag);
+            pluginAdd(p, sp, allPluginFlags);
         });
 
         if (argv.thirdpartyplugins || argv.cprplugins) {
             var mapVars = ' --variable 
API_KEY_FOR_ANDROID="AIzaSyBICVSs9JqT7WdASuN5HSe7w-pCE0n_X88" --variable 
API_KEY_FOR_IOS="AIzaSyAikyYG24YYFvq5Vy41P5kppsfO2GgF9jM"';
             var fbVars = ' --variable APP_ID=value --variable APP_NAME=value';
-            pluginAdd(CORDOVA_REGISTRY_PLUGINS.join(' '), searchPath, 
browserifyFlag + mapVars + fbVars);
+            pluginAdd(CORDOVA_REGISTRY_PLUGINS.join(' '), searchPath, 
browserifyFlag + mapVars + fbVars + variableFlag);
             // Delete duplicate <uses-permission> due to maxSdk (CB-8401)
             if (argv.android) {
                 shelljs.sed('-i', 
/{[^{]*(maxSdk|WRITE_EXTERNAL_STORAGE).*?(maxSdk|WRITE_EXTERNAL_STORAGE)[^}]*},/,
 '', path.join('plugins', 'android.json'));
@@ -632,13 +645,13 @@ function installPlugins() {
             }
         }
         if (argv.thirdpartyplugins || argv.telerikplugins) {
-            pluginAdd(TELERIK_VERIFIED_PLUGINS.join(' '), searchPath, 
browserifyFlag);
+            pluginAdd(TELERIK_VERIFIED_PLUGINS.join(' '), searchPath, 
browserifyFlag + variableFlag);
         }
         if (argv.thirdpartyplugins || argv.plugregplugins) {
-            pluginAdd(PLUGREG_PLUGINS.join(' '), searchPath, browserifyFlag);
+            pluginAdd(PLUGREG_PLUGINS.join(' '), searchPath, browserifyFlag + 
variableFlag);
         }
         if (argv.thirdpartyplugins) {
-            pluginAdd('org.apache.cordova.mobilespec.thirdpartytests', 
mobile_spec_git_dir, linkPluginsFlag + browserifyFlag);
+            pluginAdd('org.apache.cordova.mobilespec.thirdpartytests', 
mobile_spec_git_dir, allPluginFlags);
         }
 
         // Install new-style test plugins
@@ -650,7 +663,7 @@ function installPlugins() {
             
pluginTestPaths.push(path.resolve(path.dirname(potential_tests_plugin_xml)));
           }
         });
-        pluginAdd(pluginTestPaths.join(' '), null, linkPluginsFlag + 
browserifyFlag);
+        pluginAdd(pluginTestPaths.join(' '), null, allPluginFlags);
 
         popd();
     }


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

Reply via email to