blob: 8eaecb87ca63e4c912e83b7cf88c479cf0f58b60 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF
* or more contributor license agreements. See th
* distributed with this work for additional infor
* regarding copyright ownership. The ASF license
* to you under the Apache License, Version 2.0 (t
* "License"); you may not use this file except in
* with the License. You may obtain a copy of the
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to
* software distributed under the License is distr
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
* KIND, either express or implied. See the Licen
* specific language governing permissions and lim
* under the License.
*/
var fs = require('fs');
var path = require('path');
var browserify = require('browserify');
var root = path.join(__dirname, '..', '..');
var pkgJson = require('../../package.json');
var collectFiles = require('./collect-files');
var copyProps = require('./copy-props');
module.exports = function bundle(platform, debug, commitId, platformVersion, platformPath) {
if (fs.existsSync(platformPath) && fs.existsSync(path.join(platformPath, 'cordova-js-src'))) {
platformPath = path.join(platformPath, 'cordova-js-src');
} else {
if(platform === 'test') {
platformPath = path.resolve(root, 'src', 'legacy-exec', platform);
} else {
console.log('Your version of ' + platform + ' does not contain cordova-js-src. Update to a newer version of ' + platform + '.');
}
}
var platformDirname = platform === 'amazon-fireos' ? 'android' : platform;
var modules = {'cordova': path.resolve(root, 'src', 'cordova_b.js')};
copyProps(modules, collectFiles(path.resolve(root, 'src', 'common'), 'cordova'));
copyProps(modules, collectFiles(platformPath, 'cordova'));
// Replace standart initialization script with browserify's one
delete modules['cordova/init_b'];
delete modules['cordova/modulemapper_b'];
delete modules['cordova/pluginloader_b'];
modules['cordova/init'] = path.resolve(root, 'src', 'common', 'init_b.js');
modules['cordova/modulemapper'] = path.resolve(root, 'src', 'common', 'modulemapper_b.js');
modules['cordova/pluginloader'] = path.resolve(root, 'src', 'common', 'pluginloader_b.js');
// test doesn't support custom paths
if (platform === 'test') {
var androidPath = path.resolve(pkgJson['cordova-platforms']['cordova-android']);
var iosPath = path.resolve(pkgJson['cordova-platforms']['cordova-ios']);
var testFilesPath = path.resolve(androidPath, 'cordova-js-src', 'android');
// Add android platform-specific modules that have tests to the test bundle.
if(fs.existsSync(androidPath)) {
modules['cordova/android/exec'] = path.resolve(androidPath, 'cordova-js-src', 'exec.js');
} else {
//testFilesPath = path.resolve('src', 'legacy-exec', 'android', 'android');
//modules['cordova/android/exec'] = path.resolve(root, 'src', 'legacy-exec', 'android', 'exec.js');
console.log('Couldn\'t add android test files.');
throw 'Stopped process';
}
copyProps(modules, collectFiles(testFilesPath, 'cordova/android'));
//Add iOS platform-specific modules that have tests for the test bundle.
if(fs.existsSync(iosPath)) {
modules['cordova/ios/exec'] = path.join(iosPath, 'cordova-js-src', 'exec.js');
} else {
//modules['cordova/ios/exec'] = path.resolve(root, 'src', 'legacy-exec', 'ios', 'exec.js');
console.log('Couldn\'t add iOS test files.');
throw 'Stopped process';
}
copyProps(modules, collectFiles(testFilesPath, 'cordova/ios'));
}
modules = Object.keys(modules)
.map(function (moduleId) {
return {
file: modules[moduleId],
expose: moduleId
};
});
return browserify({debug: !!debug, detectGlobals: false})
.require(modules)
.exclude('cordova/plugin_list');
};