CB-8441 updated workflow to use cordova-js-src when available
diff --git a/tasks/lib/bundle-browserify.js b/tasks/lib/bundle-browserify.js
index 668d1e9..a6b8687 100644
--- a/tasks/lib/bundle-browserify.js
+++ b/tasks/lib/bundle-browserify.js
@@ -30,11 +30,18 @@
// XXX plugin_list is not present at this stage
b.ignore(path.join(root, 'src', 'common', 'plugin_list'));
- b.transform(require_tr.transform);
+ b.transform(require_tr.transform, {'platform': platform});
- b.add(path.join(root, 'src', platform, 'exec.js'));
-
- b.add(path.join(root, 'src', platform, 'platform.js'));
+ var cordovajssrc = path.join(process.cwd(), 'platforms', platform, 'platform_www', 'cordova-js-src');
+ //checks to see if browserify is run in a cli project and
+ //if the platform has a cordova-js-src to build cordova.js with
+ if(fs.existsSync(cordovajssrc)){
+ b.add(path.join(cordovajssrc, 'exec.js'));
+ b.add(path.join(cordovajssrc, 'platform.js'));
+ } else {
+ b.add(path.join(root, 'src', 'legacy-exec', platform, 'exec.js'));
+ b.add(path.join(root, 'src', 'legacy-exec', platform, 'platform.js'));
+ }
b.add(path.join(root, 'src', 'scripts', 'bootstrap.js'));
diff --git a/tasks/lib/require-tr.js b/tasks/lib/require-tr.js
index a433b30..d8e1ff1 100644
--- a/tasks/lib/require-tr.js
+++ b/tasks/lib/require-tr.js
@@ -37,10 +37,11 @@
init: function(platform) {
this.platform = platform;
- this.modules = [];
+ this.modules[platform] = [];
},
- transform: function(file) {
+ transform: function(file, platObj) {
+ this.platform = platObj.platform;
var data = '';
function write(buf) {
@@ -48,17 +49,18 @@
}
function end() {
- // SOME BS pre-transforms
+ var platform = platObj.platform;
+ // SOME BS pre-transforms
if(data.match(/clobbers\('cordova\/plugin\/android\/app/)) {
// Checking for '\' from the windows path
root = root.replace(/\\/g, '/');
if(file.match(/android\/platform.js$/) || file.match(/android\\platform.js$/)) {
data = data.replace(/modulemapper\.clobbers.*\n/,
- util.format('navigator.app = require("%s/src/android/plugin/android/app")', root));
+ util.format('navigator.app = require("%s/src/legacy-exec/android/plugin/android/app")', root));
} else if (file.match(/amazon-fireos\/platform.js$/) || file.match(/amazon-fireos\\platform.js$/)) {
data = data.replace(/modulemapper\.clobbers.*\n/,
- util.format('navigator.app = require("%s/src/amazon-fireos/plugin/android/app")', root));
+ util.format('navigator.app = require("%s/src/legacy-exec/amazon-fireos/plugin/android/app")', root));
}
}
@@ -75,40 +77,42 @@
'getOriginalSymbol(window');
}
- this.queue(_updateRequires(data));
+ this.queue(_updateRequires(data, platform));
this.queue(null);
}
return through(write, end);
},
- hasModule: function(module) {
- for(var i = 0, j = this.modules.length ; i < j ; i++) {
- if(this.modules[i].symbol === module) {
+ hasModule: function(module, platform) {
+ if(this.modules[platform] === undefined) {
+ this.modules[platform] = [];
+ }
+ var platformModules = this.modules[platform];
+
+ for(var i = 0, j = platformModules.length ; i < j ; i++) {
+ if(platformModules[i].symbol === module) {
return true;
}
}
return false;
},
- getModules: function() {
- return this.modules;
+ getModules: function(platform) {
+ return this.modules[platform];
},
- getPlatform: function() {
- return this.platform;
- },
- addModule: function(module) {
+ addModule: function(module, platform) {
if(!module || !module.symbol || !module.path) {
throw new Error("Can't add module without a symbol and a path");
}
- this.modules.push(module);
+ this.modules[platform].push(module);
},
- modules:[],
+ modules:{},
platform: null
}
/*
* visits AST and modifies all the require('cordova/*') and require('org.apache.cordova.*')
*/
-function _updateRequires(code) {
+function _updateRequires(code, platform) {
var ast = UglifyJS.parse(code);
var before = new UglifyJS.TreeTransformer(function(node, descend) {
@@ -131,6 +135,8 @@
module.indexOf("cordova") === 0) {
var scriptpath;
+ var cordovajssrc = path.join(process.cwd(), "platforms", platform, "platform_www", "cordova-js-src")
+
// require('cordova') -> cordova.js
if(module === "cordova") {
@@ -141,24 +147,35 @@
path.join(root, "src", "common", "init_b"));
// android and amazon-fireos have some special require's
} else if(module.match(/cordova\/(android|amazon-fireos)\/(.+)/)) {
- scriptPath = node.args[0].value = module.replace(/cordova\/(android|amazon-fireos)\/(.+)/,
- path.join(root, "src", "$1", "android", "$2"));
+ if(fs.existsSync(cordovajssrc)) {
+ //cordova cli project with cordova-js-src in platform
+ scriptPath = node.args[0].value = module.replace(/cordova\/(android|amazon-fireos)\/(.+)/, path.join(cordovajssrc, "android", "$2"));
+ } else {
+ //non cli or no cordova-js-src directory
+ scriptPath = node.args[0].value = module.replace(/cordova\/(android|amazon-fireos)\/(.+)/, path.join(root, "src", "legacy-exec", "$1", "android", "$2"));
+ }
// require('cordova/exec') and require('cordova/platform') -> platform's exec/platform
- } else if(module.match(/cordova\/(platform|exec)$/)) {
- scriptPath = node.args[0].value = module.replace(/cordova\/(platform|exec)/,
- path.join(root, "src", requireTr.getPlatform(), "$1"));
+ } else if(module.match(/cordova\/(platform|exec)$/)) {
+ if(fs.existsSync(cordovajssrc)) {
+ //cordova cli project with cordova-js-src in platform
+ scriptPath = node.args[0].value = module.replace(/cordova\/(platform|exec)/, path.join(cordovajssrc, "$1"));
+ } else {
+ //non cli or no cordova-js-src directory
+ scriptPath = node.args[0].value = module.replace(/cordova\/(platform|exec)/, path.join(root, "src", "legacy-exec", platform, "$1"));
+ }
+
// require('cordova/anything') should be under common/
} else if(module.match(/cordova\/(.+)/)) {
scriptPath = node.args[0].value = module.replace(/cordova\/(.+)/,
path.join(root, "src", "common", "$1"));
}
- if(requireTr.hasModule(module) === false) {
- requireTr.addModule({symbol: module, path: scriptPath});
+ if(requireTr.hasModule(module, platform) === false) {
+ requireTr.addModule({symbol: module, path: scriptPath}, platform);
}
}
else if(module !== undefined && ( module.indexOf("org.apache.cordova") !== -1 ||
module.indexOf("./") === 0 || module.indexOf("../") === 0 ) ) {
- var modules = requireTr.getModules();
+ var modules = requireTr.getModules(platform);
if(module.indexOf("../") === 0){
module = module.replace('../', '');
diff --git a/tasks/lib/write-license-header.js b/tasks/lib/write-license-header.js
index e736011..f9a394b 100644
--- a/tasks/lib/write-license-header.js
+++ b/tasks/lib/write-license-header.js
@@ -34,6 +34,6 @@
outStream.write(licenseText, 'utf8');
outStream.write("var PLATFORM_VERSION_BUILD_LABEL = '" + platformVersion + "';\n", 'utf8');
outStream.write("var define = {moduleMap: []};\n", 'utf8');
- // outStream.write(util.format("var symbolList = %s", JSON.stringify(symbolList)), 'utf8');
+ //outStream.write(util.format("var symbolList = %s", JSON.stringify(symbolList)), 'utf8');
}