You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by js...@apache.org on 2014/07/02 21:37:03 UTC
[4/4] git commit: CB-6776 Make project/.cordova/config.json integrate
with platforms.js
CB-6776 Make project/.cordova/config.json integrate with platforms.js
Project: http://git-wip-us.apache.org/repos/asf/cordova-lib/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-lib/commit/3911876c
Tree: http://git-wip-us.apache.org/repos/asf/cordova-lib/tree/3911876c
Diff: http://git-wip-us.apache.org/repos/asf/cordova-lib/diff/3911876c
Branch: refs/heads/master
Commit: 3911876cdca2fc69f964c2e72fc7a01813ebf639
Parents: 2cc872f
Author: Josh Soref <js...@blackberry.com>
Authored: Thu Jun 19 15:17:17 2014 -0400
Committer: Josh Soref <js...@blackberry.com>
Committed: Wed Jul 2 15:36:13 2014 -0400
----------------------------------------------------------------------
cordova-lib/spec-cordova/create.spec.js | 4 +-
.../fixtures/base/.cordova/config.json | 6 +-
cordova-lib/spec-cordova/lazy_load.spec.js | 98 +++++++++++++++++---
.../metadata/windows8_parser.spec.js | 12 ++-
.../spec-cordova/metadata/wp8_parser.spec.js | 12 ++-
cordova-lib/spec-cordova/platform.spec.js | 4 +-
cordova-lib/src/cordova/config.js | 2 +-
cordova-lib/src/cordova/create.js | 14 +--
cordova-lib/src/cordova/lazy_load.js | 74 +++++++++++----
.../cordova/metadata/amazon_fireos_parser.js | 2 +-
.../src/cordova/metadata/android_parser.js | 2 +-
.../src/cordova/metadata/blackberry10_parser.js | 14 ++-
.../src/cordova/metadata/firefoxos_parser.js | 2 +-
cordova-lib/src/cordova/metadata/ios_parser.js | 2 +-
.../src/cordova/metadata/ubuntu_parser.js | 2 +-
.../src/cordova/metadata/windows_parser.js | 17 ++--
cordova-lib/src/cordova/metadata/wp8_parser.js | 14 +--
cordova-lib/src/cordova/platform.js | 7 +-
cordova-lib/src/cordova/platforms.js | 1 +
19 files changed, 206 insertions(+), 83 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cordova-lib/blob/3911876c/cordova-lib/spec-cordova/create.spec.js
----------------------------------------------------------------------
diff --git a/cordova-lib/spec-cordova/create.spec.js b/cordova-lib/spec-cordova/create.spec.js
index 47bb2af..a7e5c08 100644
--- a/cordova-lib/spec-cordova/create.spec.js
+++ b/cordova-lib/spec-cordova/create.spec.js
@@ -50,7 +50,7 @@ var cordovaDir = path.join(project, '.cordova');
var configNormal = {
lib: {
www: {
- uri: path.join(__dirname, 'fixtures', 'base', 'www'),
+ url: path.join(__dirname, 'fixtures', 'base', 'www'),
version: "testCordovaCreate",
id: appName
}
@@ -59,7 +59,7 @@ var configNormal = {
var configSymlink = {
lib: {
www: {
- uri: path.join(__dirname, 'fixtures', 'base'), // "create" should copy or link the www child of this dir and not the dir itself.
+ url: path.join(__dirname, 'fixtures', 'base'), // "create" should copy or link the www child of this dir and not the dir itself.
link: true
}
}
http://git-wip-us.apache.org/repos/asf/cordova-lib/blob/3911876c/cordova-lib/spec-cordova/fixtures/base/.cordova/config.json
----------------------------------------------------------------------
diff --git a/cordova-lib/spec-cordova/fixtures/base/.cordova/config.json b/cordova-lib/spec-cordova/fixtures/base/.cordova/config.json
index 662fc9d..4f52ca7 100644
--- a/cordova-lib/spec-cordova/fixtures/base/.cordova/config.json
+++ b/cordova-lib/spec-cordova/fixtures/base/.cordova/config.json
@@ -3,17 +3,17 @@
"name":"TestBase",
"lib": {
"android": {
- "uri": "/some/junk/path",
+ "url": "/some/junk/path",
"version": "dev",
"id": "cordova-android-dev"
},
"ios": {
- "uri": "/some/junk/path",
+ "url": "/some/junk/path",
"version": "dev",
"id": "cordova-ios-dev"
},
"wp8": {
- "uri": "/some/junk/path",
+ "url": "/some/junk/path",
"version": "dev",
"id": "cordova-wp8-dev"
}
http://git-wip-us.apache.org/repos/asf/cordova-lib/blob/3911876c/cordova-lib/spec-cordova/lazy_load.spec.js
----------------------------------------------------------------------
diff --git a/cordova-lib/spec-cordova/lazy_load.spec.js b/cordova-lib/spec-cordova/lazy_load.spec.js
index 7db849d..27b5b91 100644
--- a/cordova-lib/spec-cordova/lazy_load.spec.js
+++ b/cordova-lib/spec-cordova/lazy_load.spec.js
@@ -32,6 +32,13 @@ describe('lazy_load module', function() {
var custom_path;
beforeEach(function() {
custom_path = spyOn(config, 'has_custom_path').andReturn(false);
+ fakeLazyLoad = function(id, platform, version) {
+ if (platform == 'wp7' || platform == 'wp8') {
+ return Q(path.join('lib', 'wp', id, version, platform));
+ } else {
+ return Q(path.join('lib', platform, id, version, platforms[platform] && platforms[platform].subdirectory ? platforms[platform].subdirectory : ''));
+ }
+ };
});
describe('cordova method (loads stock cordova libs)', function() {
var custom;
@@ -46,8 +53,15 @@ describe('lazy_load module', function() {
}).fin(done);
});
it('should invoke lazy_load.custom with appropriate url, platform, and version as specified in platforms manifest', function(done) {
+ var url = platforms.android.url + ';a=snapshot;h=' + platforms.android.version + ';sf=tgz';
+ custom.andCallFake(function (platforms, platform) {
+ expect(platform).toEqual('android');
+ expect(platforms[platform].url).toEqual(url);
+ expect(platforms[platform].id).toEqual('cordova');
+ return fakeLazyLoad(platforms[platform].id, platform, platforms[platform].version);
+ });
lazy_load.cordova('android').then(function(dir) {
- expect(custom).toHaveBeenCalledWith(platforms.android.url + ';a=snapshot;h=' + platforms.android.version + ';sf=tgz', 'cordova', 'android', platforms.android.version);
+ expect(custom).toHaveBeenCalled();
expect(dir).toBeDefined();
done();
});
@@ -67,7 +81,14 @@ describe('lazy_load module', function() {
it('should callback with no errors and not fire event hooks if library already exists', function(done) {
exists.andReturn(true);
- lazy_load.custom('http://some remote url', 'some id', 'platform X', 'three point five').then(function() {
+ var mock_platforms = {
+ 'platform X': {
+ id: 'some id',
+ url: 'http://some remote url',
+ version: 'three point five'
+ }
+ };
+ lazy_load.custom(mock_platforms, 'platform X').then(function() {
expect(fire).not.toHaveBeenCalled()
}, function(err) {
expect(err).not.toBeDefined();
@@ -75,7 +96,14 @@ describe('lazy_load module', function() {
});
it('should callback with no errors and fire event hooks even if library already exists if the lib url is a local dir', function(done) {
exists.andReturn(true);
- lazy_load.custom('some local dir', 'some id', 'platform X', 'three point six').then(function() {
+ var mock_platforms = {
+ 'platform X': {
+ id: 'some id',
+ url: 'some local dir',
+ version: 'three point six'
+ }
+ };
+ lazy_load.custom(mock_platforms, 'platform X').then(function() {
expect(fire).not.toHaveBeenCalled()
}, function(err) {
expect(err).not.toBeDefined();
@@ -109,11 +137,18 @@ describe('lazy_load module', function() {
load_spy = spyOn(npmconf, 'load').andCallFake(function(cb) { cb(null, { get: function() { return npmConfProxy }}); });
});
- it('should call request with appopriate url params', function(done) {
+ it('should call request with appropriate url params', function(done) {
var url = 'https://github.com/apache/someplugin';
- lazy_load.custom(url, 'random', 'android', '1.0').then(function() {
+ var with_android_platform = {
+ 'android': {
+ id: 'random',
+ url: url,
+ version: '1.0'
+ }
+ };
+ lazy_load.custom(with_android_platform, 'android').then(function() {
expect(req).toHaveBeenCalledWith({
- uri:url
+ url:url
}, jasmine.any(Function));
}, function(err) {
expect(err).not.toBeDefined();
@@ -123,9 +158,16 @@ describe('lazy_load module', function() {
var proxy = 'https://somelocalproxy.com';
npmConfProxy = proxy;
var url = 'https://github.com/apache/someplugin';
- lazy_load.custom(url, 'random', 'android', '1.0').then(function() {
+ var with_android_platform = {
+ 'android': {
+ id: 'random',
+ url: url,
+ version: '1.0'
+ }
+ };
+ lazy_load.custom(with_android_platform, 'android').then(function() {
expect(req).toHaveBeenCalledWith({
- uri:url,
+ url:url,
proxy:proxy
}, jasmine.any(Function));
}, function(err) {
@@ -136,9 +178,16 @@ describe('lazy_load module', function() {
var proxy = 'http://somelocalproxy.com';
npmConfProxy = proxy;
var url = 'http://github.com/apache/someplugin';
- lazy_load.custom(url, 'random', 'android', '1.0').then(function() {
+ var with_android_platform = {
+ 'android': {
+ id: 'random',
+ url: url,
+ version: '1.0'
+ }
+ };
+ lazy_load.custom(with_android_platform, 'android').then(function() {
expect(req).toHaveBeenCalledWith({
- uri:url,
+ url:url,
proxy:proxy
}, jasmine.any(Function));
}, function(err) {
@@ -149,14 +198,28 @@ describe('lazy_load module', function() {
describe('local paths for libraries', function() {
it('should return the local path, no symlink', function(done) {
- lazy_load.custom('/some/random/lib', 'id', 'X', 'three point eight').then(function(dir) {
+ var mock_platforms = {
+ 'X': {
+ id: 'id',
+ url: '/some/random/lib',
+ version: 'three point eight'
+ }
+ };
+ lazy_load.custom(mock_platforms, 'X').then(function(dir) {
expect(dir).toEqual('/some/random/lib');
}, function(err) {
expect(err).toBeUndefined();
}).fin(done);
});
it('should not file download hook', function(done) {
- lazy_load.custom('/some/random/lib', 'id', 'X', 'three point nine').then(function() {
+ var mock_platforms = {
+ 'X': {
+ id: 'id',
+ url: '/some/random/lib',
+ version: 'three point nine'
+ }
+ };
+ lazy_load.custom(mock_platforms, 'X').then(function() {
expect(fire).not.toHaveBeenCalledWith('after_library_download', {platform:'X',url:'/some/random/lib',id:'id',version:'three point nine',path:'/some/random/lib', symlink:false});
}, function(err) {
expect(err).toBeUndefined();
@@ -175,7 +238,7 @@ describe('lazy_load module', function() {
var read = spyOn(config, 'read').andReturn({
lib:{
maybe:{
- uri:'you or eye?',
+ url:'you or eye?',
id:'eye dee',
version:'four point twenty'
}
@@ -183,8 +246,15 @@ describe('lazy_load module', function() {
});
var p = '/some/random/custom/path';
custom_path.andReturn(p);
+ custom.andCallFake(function (platforms, platform) {
+ expect(platform).toEqual('maybe');
+ expect(platforms[platform].url).toEqual('you or eye?');
+ expect(platforms[platform].id).toEqual('eye dee');
+ expect(platforms[platform].version).toEqual('four point twenty');
+ return fakeLazyLoad(platforms[platform].id, platform, platforms[platform].version);
+ });
lazy_load.based_on_config('yup', 'maybe').then(function() {
- expect(custom).toHaveBeenCalledWith('you or eye?', 'eye dee', 'maybe', 'four point twenty');
+ expect(custom).toHaveBeenCalled();
}, function(err) {
expect(err).toBeUndefined();
}).fin(done);
http://git-wip-us.apache.org/repos/asf/cordova-lib/blob/3911876c/cordova-lib/spec-cordova/metadata/windows8_parser.spec.js
----------------------------------------------------------------------
diff --git a/cordova-lib/spec-cordova/metadata/windows8_parser.spec.js b/cordova-lib/spec-cordova/metadata/windows8_parser.spec.js
index 79af143..389e9e5 100644
--- a/cordova-lib/spec-cordova/metadata/windows8_parser.spec.js
+++ b/cordova-lib/spec-cordova/metadata/windows8_parser.spec.js
@@ -36,7 +36,7 @@ var cfg = new ConfigParser(path.join(__dirname, '..', 'test-config.xml'));
describe('windows8 project parser', function() {
var proj = '/some/path';
- var exists, exec, custom, readdir, cfg_parser;
+ var exists, exec, custom, readdir, cfg_parser, config_read;
var winXml;
beforeEach(function() {
exists = spyOn(fs, 'existsSync').andReturn(true);
@@ -45,6 +45,16 @@ describe('windows8 project parser', function() {
cb(null, '', '');
});
custom = spyOn(config, 'has_custom_path').andReturn(false);
+ config_read = spyOn(config, 'read').andCallFake(function() {
+ return custom() ? {
+ lib: {
+ windows8: {
+ url: custom()
+ }
+ }
+ }
+ : ({})
+ });
readdir = spyOn(fs, 'readdirSync').andReturn(['test.jsproj']);
winXml = null;
spyOn(xmlHelpers, 'parseElementtreeSync').andCallFake(function(path) {
http://git-wip-us.apache.org/repos/asf/cordova-lib/blob/3911876c/cordova-lib/spec-cordova/metadata/wp8_parser.spec.js
----------------------------------------------------------------------
diff --git a/cordova-lib/spec-cordova/metadata/wp8_parser.spec.js b/cordova-lib/spec-cordova/metadata/wp8_parser.spec.js
index 84e8777..69336cb 100644
--- a/cordova-lib/spec-cordova/metadata/wp8_parser.spec.js
+++ b/cordova-lib/spec-cordova/metadata/wp8_parser.spec.js
@@ -36,7 +36,7 @@ var cfg = new ConfigParser(path.join(__dirname, '..', 'test-config.xml'));
describe('wp8 project parser', function() {
var proj = '/some/path';
- var exists, exec, custom, readdir, cfg_parser;
+ var exists, exec, custom, readdir, cfg_parser, config_read;
var manifestXml, projXml;
beforeEach(function() {
exists = spyOn(fs, 'existsSync').andReturn(true);
@@ -44,6 +44,16 @@ describe('wp8 project parser', function() {
(cb || opts)(0, '', '');
});
custom = spyOn(config, 'has_custom_path').andReturn(false);
+ config_read = spyOn(config, 'read').andCallFake(function() {
+ return custom() ? {
+ lib: {
+ wp8: {
+ url: custom()
+ }
+ }
+ }
+ : ({})
+ });
readdir = spyOn(fs, 'readdirSync').andReturn(['test.csproj']);
projXml = manifestXml = null;
spyOn(xmlHelpers, 'parseElementtreeSync').andCallFake(function(path) {
http://git-wip-us.apache.org/repos/asf/cordova-lib/blob/3911876c/cordova-lib/spec-cordova/platform.spec.js
----------------------------------------------------------------------
diff --git a/cordova-lib/spec-cordova/platform.spec.js b/cordova-lib/spec-cordova/platform.spec.js
index 76c9501..fb59ef2 100644
--- a/cordova-lib/spec-cordova/platform.spec.js
+++ b/cordova-lib/spec-cordova/platform.spec.js
@@ -28,6 +28,7 @@ var helpers = require('./helpers'),
events = require('../src/events'),
cordova = require('../src/cordova/cordova');
+var supported_platforms = Object.keys(platforms).filter(function(p) { return p != 'www'; });
var tmpDir = helpers.tmpDir('platform_test');
var project = path.join(tmpDir, 'project');
@@ -52,7 +53,6 @@ describe('platform end-to-end', function() {
expect(installed[1].indexOf(helpers.testPlatform)).toBe(-1);
});
}
-
function fullPlatformList() {
return cordova.raw.platform('list').then(function() {
var installed = results.match(/Installed platforms: (.*)/);
@@ -75,7 +75,7 @@ describe('platform end-to-end', function() {
// Now we load the config.json in the newly created project and edit the target platform's lib entry
// to point at the fixture version. This is necessary so that cordova.prepare can find cordova.js there.
var c = config.read(project);
- c.lib[helpers.testPlatform].uri = path.join(__dirname, 'fixtures', 'platforms', helpers.testPlatform + '-lib');
+ c.lib[helpers.testPlatform].url = path.join(__dirname, 'fixtures', 'platforms', helpers.testPlatform + '-lib');
config.write(project, c);
// The config.json in the fixture project points at fake "local" paths.
http://git-wip-us.apache.org/repos/asf/cordova-lib/blob/3911876c/cordova-lib/src/cordova/config.js
----------------------------------------------------------------------
diff --git a/cordova-lib/src/cordova/config.js b/cordova-lib/src/cordova/config.js
index a92b10a..0ab3f18 100644
--- a/cordova-lib/src/cordova/config.js
+++ b/cordova-lib/src/cordova/config.js
@@ -76,7 +76,7 @@ config.write = function set_config(project_root, json) {
config.has_custom_path = function(project_root, platform) {
var json = config.read(project_root);
if (json.lib && json.lib[platform]) {
- var uri = url.parse(json.lib[platform].uri);
+ var uri = url.parse(json.lib[platform].url || json.lib[platform].uri);
if (!(uri.protocol)) return uri.path;
else if (uri.protocol && uri.protocol[1] ==':') return uri.href;
}
http://git-wip-us.apache.org/repos/asf/cordova-lib/blob/3911876c/cordova-lib/src/cordova/create.js
----------------------------------------------------------------------
diff --git a/cordova-lib/src/cordova/create.js b/cordova-lib/src/cordova/create.js
index b2ef453..2d2b429 100644
--- a/cordova-lib/src/cordova/create.js
+++ b/cordova-lib/src/cordova/create.js
@@ -97,29 +97,29 @@ function create(dir, id, name, cfg) {
var custom_hooks;
if (config_json.lib && config_json.lib.www) {
- events.emit('log', 'Using custom www assets from '+config_json.lib.www.uri);
+ events.emit('log', 'Using custom www assets from '+config_json.lib.www.url);
// TODO (kamrik): extend lazy_load for retrieval without caching to allow net urls for --src.
- var www_version = config_json.lib.www.version || 'not_versioned';
- var www_id = config_json.lib.www.id || 'dummy_id';
+ config_json.lib.www.version = config_json.lib.www.version || 'not_versioned';
+ config_json.lib.www.id = config_json.lib.www.id || 'dummy_id';
symlink = !!config_json.lib.www.link;
// Make sure that the source www/ is not a direct ancestor of the target www/, or else we will recursively copy forever.
// To do this, we make sure that the shortest relative path from source-to-target must start by going up at least one directory.
- var relative_path_from_source_to_target = path.relative(config_json.lib.www.uri, www_dir);
+ var relative_path_from_source_to_target = path.relative(config_json.lib.www.url, www_dir);
var does_relative_path_go_up_at_least_one_dir = relative_path_from_source_to_target.split(path.sep)[0] == '..';
if (!does_relative_path_go_up_at_least_one_dir) {
throw new CordovaError(
'Project dir "' +
dir +
'" must not be created at/inside the template used to create the project "' +
- config_json.lib.www.uri + '".'
+ config_json.lib.www.url + '".'
);
}
if(symlink) {
- p = Q(config_json.lib.www.uri);
+ p = Q(config_json.lib.www.url);
events.emit('verbose', 'Symlinking custom www assets into "' + www_dir + '"');
} else {
- p = lazy_load.custom(config_json.lib.www.uri, www_id, 'www', www_version)
+ p = lazy_load.custom(config_json.lib, 'www')
.then(function(d) {
events.emit('verbose', 'Copying custom www assets into "' + www_dir + '"');
return d;
http://git-wip-us.apache.org/repos/asf/cordova-lib/blob/3911876c/cordova-lib/src/cordova/lazy_load.js
----------------------------------------------------------------------
diff --git a/cordova-lib/src/cordova/lazy_load.js b/cordova-lib/src/cordova/lazy_load.js
index c157cc2..e8cee87 100644
--- a/cordova-lib/src/cordova/lazy_load.js
+++ b/cordova-lib/src/cordova/lazy_load.js
@@ -38,7 +38,22 @@ var path = require('path'),
URL = require('url'),
Q = require('q'),
npm = require('npm'),
- util = require('./util');
+ util = require('./util'),
+ stubplatform = {
+ url : undefined,
+ version: undefined,
+ altplatform: undefined,
+ subdirectory: ''
+ };
+
+function mixin(mix, into) {
+ Object.getOwnPropertyNames(mix).forEach(function (prop) {
+ if (Object.hasOwnProperty.call(mix, prop)) {
+ Object.defineProperty(into, prop, Object.getOwnPropertyDescriptor(mix, prop));
+ }
+ });
+ return into;
+}
exports.cordova = cordova;
@@ -47,13 +62,17 @@ exports.cordova_npm = cordova_npm;
exports.custom = custom;
exports.based_on_config = based_on_config;
-
// Returns a promise for the path to the lazy-loaded directory.
function based_on_config(project_root, platform, opts) {
var custom_path = config.has_custom_path(project_root, platform);
+ if (custom_path === undefined && platform === 'windows') {
+ custom_path = config.has_custom_path(project_root, 'windows8');
+ }
if (custom_path) {
- var dot_file = config.read(project_root);
- return module.exports.custom(dot_file.lib[platform].uri, dot_file.lib[platform].id, platform, dot_file.lib[platform].version);
+ var dot_file = config.read(project_root),
+ mixed_platforms = mixin(platforms, {});
+ mixed_platforms[platform] = mixin(dot_file.lib && dot_file.lib[platform] || {}, mixed_platforms[platform] || {});
+ return module.exports.custom(mixed_platforms, platform);
} else {
return module.exports.cordova(platform, opts);
}
@@ -70,12 +89,15 @@ function cordova(platform, opts) {
}
function cordova_git(platform) {
+ var mixed_platforms = mixin(platforms, {}),
+ plat;
if (!(platform in platforms)) {
return Q.reject(new Error('Cordova library "' + platform + '" not recognized.'));
}
-
- var url = platforms[platform].url + ';a=snapshot;h=' + platforms[platform].version + ';sf=tgz';
- return module.exports.custom(url, 'cordova', platform, platforms[platform].version);
+ plat = mixed_platforms[platform];
+ plat.url = plat.url + ';a=snapshot;h=' + plat.version + ';sf=tgz';
+ plat.id = 'cordova';
+ return module.exports.custom(mixed_platforms, platform);
}
function cordova_npm(platform) {
@@ -103,28 +125,41 @@ function cordova_npm(platform) {
}
// Returns a promise for the path to the lazy-loaded directory.
-function custom(url, id, platform, version) {
+function custom(platforms, platform) {
+ var plat;
+ var id;
+ var uri;
+ var url;
+ var version;
+ var subdir;
+ var platdir;
var download_dir;
var tmp_dir;
var lib_dir;
+ var isUri;
+ if (!(platform in platforms)) {
+ return Q.reject(new Error('Cordova library "' + platform + '" not recognized.'));
+ }
+ plat = mixin(platforms[platform], mixin(stubplatform, {}));
+ version = plat.version;
+ url = plat.url;
+ id = plat.id;
+ subdir = plat.subdirectory;
+ platdir = plat.altplatform || platform;
// Return early for already-cached remote URL, or for local URLs.
- var uri = URL.parse(url);
- var isUri = uri.protocol && uri.protocol[1] != ':'; // second part of conditional is for awesome windows support. fuuu windows
+ uri = URL.parse(url);
+ isUri = uri.protocol && uri.protocol[1] != ':'; // second part of conditional is for awesome windows support. fuuu windows
if (isUri) {
- download_dir = (platform == 'wp8' ? path.join(util.libDirectory, 'wp', id, version) :
- path.join(util.libDirectory, platform, id, version));
- lib_dir = download_dir;
- if (platforms[platform] && platforms[platform].subdirectory && platform !== 'blackberry10') {
- lib_dir = path.join(download_dir, platforms[platform].subdirectory);
- }
+ download_dir = path.join(util.libDirectory, platdir, id, version);
+ lib_dir = path.join(download_dir, subdir);
if (fs.existsSync(download_dir)) {
events.emit('verbose', id + ' library for "' + platform + '" already exists. No need to download. Continuing.');
return Q(lib_dir);
}
} else {
// Local path.
- lib_dir = platforms[platform] && platforms[platform].subdirectory ? path.join(url, platforms[platform].subdirectory) : url;
+ lib_dir = path.join(url, subdir);
return Q(lib_dir);
}
return hooker.fire('before_library_download', {
@@ -153,7 +188,7 @@ function custom(url, id, platform, version) {
shell.mkdir('-p', tmp_dir);
var size = 0;
- var request_options = {uri:url};
+ var request_options = {url:url};
if (proxy) {
request_options.proxy = proxy;
}
@@ -173,7 +208,6 @@ function custom(url, id, platform, version) {
size = body.length;
}
});
-
req.pipe(zlib.createUnzip())
.pipe(tar.Extract({path:tmp_dir}))
.on('error', function(err) {
@@ -186,7 +220,7 @@ function custom(url, id, platform, version) {
var entries = fs.readdirSync(tmp_dir);
var entry = path.join(tmp_dir, entries[0]);
shell.mkdir('-p', download_dir);
- shell.mv('-f', path.join(entry, (platform=='blackberry10'?'blackberry10':''), '*'), download_dir);
+ shell.mv('-f', path.join(entry, '*'), download_dir);
shell.rm('-rf', tmp_dir);
d.resolve(hooker.fire('after_library_download', {
platform:platform,
http://git-wip-us.apache.org/repos/asf/cordova-lib/blob/3911876c/cordova-lib/src/cordova/metadata/amazon_fireos_parser.js
----------------------------------------------------------------------
diff --git a/cordova-lib/src/cordova/metadata/amazon_fireos_parser.js b/cordova-lib/src/cordova/metadata/amazon_fireos_parser.js
index 7bd0082..b3c78bb 100644
--- a/cordova-lib/src/cordova/metadata/amazon_fireos_parser.js
+++ b/cordova-lib/src/cordova/metadata/amazon_fireos_parser.js
@@ -43,7 +43,7 @@ module.exports = function android_parser(project) {
};
// Returns a promise.
-module.exports.check_requirements = function(project_root) {
+module.exports.check_requirements = function(project_root, lib_path) {
// Rely on platform's bin/create script to check requirements.
return Q(true);
};
http://git-wip-us.apache.org/repos/asf/cordova-lib/blob/3911876c/cordova-lib/src/cordova/metadata/android_parser.js
----------------------------------------------------------------------
diff --git a/cordova-lib/src/cordova/metadata/android_parser.js b/cordova-lib/src/cordova/metadata/android_parser.js
index 01d478c..5738e7b 100644
--- a/cordova-lib/src/cordova/metadata/android_parser.js
+++ b/cordova-lib/src/cordova/metadata/android_parser.js
@@ -43,7 +43,7 @@ module.exports = function android_parser(project) {
};
// Returns a promise.
-module.exports.check_requirements = function(project_root) {
+module.exports.check_requirements = function(project_root, lib_path) {
// Rely on platform's bin/create script to check requirements.
return Q(true);
};
http://git-wip-us.apache.org/repos/asf/cordova-lib/blob/3911876c/cordova-lib/src/cordova/metadata/blackberry10_parser.js
----------------------------------------------------------------------
diff --git a/cordova-lib/src/cordova/metadata/blackberry10_parser.js b/cordova-lib/src/cordova/metadata/blackberry10_parser.js
index 8d6ec1c..9535a4b 100644
--- a/cordova-lib/src/cordova/metadata/blackberry10_parser.js
+++ b/cordova-lib/src/cordova/metadata/blackberry10_parser.js
@@ -30,7 +30,7 @@ var fs = require('fs'),
ConfigParser = require('../../configparser/ConfigParser'),
CordovaError = require('../../CordovaError'),
events = require('../../events'),
- config = require('../config');
+ lazy_load = require('../lazy_load');
module.exports = function blackberry_parser(project) {
if (!fs.existsSync(path.join(project, 'www'))) {
@@ -42,13 +42,11 @@ module.exports = function blackberry_parser(project) {
};
// Returns a promise.
-module.exports.check_requirements = function(project_root) {
- var custom_path = config.has_custom_path(project_root, 'blackberry10');
- var lib_path;
- if (custom_path) {
- lib_path = path.join(custom_path, 'blackberry10');
- } else {
- lib_path = path.join(util.libDirectory, 'blackberry10', 'cordova', require('../platforms').blackberry10.version);
+module.exports.check_requirements = function(project_root, lib_path) {
+ if (lib_path === undefined) {
+ return lazy_load.based_on_config(project_root, 'blackberry10').then(function (lib_path) {
+ return module.exports.check_requirements(project_root, lib_path);
+ });
}
var d = Q.defer();
child_process.exec('"' + path.join(lib_path, 'bin', 'check_reqs') + '"', function(err, output, stderr) {
http://git-wip-us.apache.org/repos/asf/cordova-lib/blob/3911876c/cordova-lib/src/cordova/metadata/firefoxos_parser.js
----------------------------------------------------------------------
diff --git a/cordova-lib/src/cordova/metadata/firefoxos_parser.js b/cordova-lib/src/cordova/metadata/firefoxos_parser.js
index 0179063..b8c43ee 100644
--- a/cordova-lib/src/cordova/metadata/firefoxos_parser.js
+++ b/cordova-lib/src/cordova/metadata/firefoxos_parser.js
@@ -35,7 +35,7 @@ module.exports = function firefoxos_parser(project) {
};
// Returns a promise.
-module.exports.check_requirements = function(project_root) {
+module.exports.check_requirements = function(project_root, lib_path) {
return Q(); // Requirements always met.
};
http://git-wip-us.apache.org/repos/asf/cordova-lib/blob/3911876c/cordova-lib/src/cordova/metadata/ios_parser.js
----------------------------------------------------------------------
diff --git a/cordova-lib/src/cordova/metadata/ios_parser.js b/cordova-lib/src/cordova/metadata/ios_parser.js
index 67a07a8..972c05a 100644
--- a/cordova-lib/src/cordova/metadata/ios_parser.js
+++ b/cordova-lib/src/cordova/metadata/ios_parser.js
@@ -49,7 +49,7 @@ module.exports = function ios_parser(project) {
};
// Returns a promise.
-module.exports.check_requirements = function(project_root) {
+module.exports.check_requirements = function(project_root, lib_path) {
// Rely on platform's bin/create script to check requirements.
return Q(true);
};
http://git-wip-us.apache.org/repos/asf/cordova-lib/blob/3911876c/cordova-lib/src/cordova/metadata/ubuntu_parser.js
----------------------------------------------------------------------
diff --git a/cordova-lib/src/cordova/metadata/ubuntu_parser.js b/cordova-lib/src/cordova/metadata/ubuntu_parser.js
index 4887fe6..df8a65d 100644
--- a/cordova-lib/src/cordova/metadata/ubuntu_parser.js
+++ b/cordova-lib/src/cordova/metadata/ubuntu_parser.js
@@ -43,7 +43,7 @@ function sanitize(str) {
}
// Returns a promise.
-module.exports.check_requirements = function(project_root, callback) {
+module.exports.check_requirements = function(project_root, lib_path) {
// jshint quotmark:false
var d = Q.defer();
http://git-wip-us.apache.org/repos/asf/cordova-lib/blob/3911876c/cordova-lib/src/cordova/metadata/windows_parser.js
----------------------------------------------------------------------
diff --git a/cordova-lib/src/cordova/metadata/windows_parser.js b/cordova-lib/src/cordova/metadata/windows_parser.js
index ce08abf..5233167 100644
--- a/cordova-lib/src/cordova/metadata/windows_parser.js
+++ b/cordova-lib/src/cordova/metadata/windows_parser.js
@@ -31,7 +31,7 @@ var fs = require('fs'),
ConfigParser = require('../../configparser/ConfigParser'),
CordovaError = require('../../CordovaError'),
xml = require('../../util/xml-helpers'),
- config = require('../config'),
+ lazy_load = require('../lazy_load'),
hooker = require('../hooker'),
jsproj = require('../../util/windows/jsproj');
@@ -60,16 +60,13 @@ module.exports = function windows_parser(project) {
};
// Returns a promise
-module.exports.check_requirements = function(project_root) {
- events.emit('log', 'Checking windows requirements...');
- var lib_path = path.join(util.libDirectory, 'windows', 'cordova',
- require('../platforms').windows.version, 'windows');
-
- var custom_path = config.has_custom_path(project_root, 'windows8') ||
- config.has_custom_path(project_root, 'windows');
- if (custom_path) {
- lib_path = path.join(custom_path, 'windows');
+module.exports.check_requirements = function(project_root, lib_path) {
+ if (lib_path === undefined) {
+ return lazy_load.based_on_config(project_root, 'windows8').then(function (lib_path) {
+ return module.exports.check_requirements(project_root, lib_path);
+ });
}
+ events.emit('log', 'Checking windows8 requirements...');
var command = '"' + path.join(lib_path, 'bin', 'check_reqs') + '"';
events.emit('verbose', 'Running "' + command + '" (output to follow)');
var d = Q.defer();
http://git-wip-us.apache.org/repos/asf/cordova-lib/blob/3911876c/cordova-lib/src/cordova/metadata/wp8_parser.js
----------------------------------------------------------------------
diff --git a/cordova-lib/src/cordova/metadata/wp8_parser.js b/cordova-lib/src/cordova/metadata/wp8_parser.js
index 991bf0f..f305209 100644
--- a/cordova-lib/src/cordova/metadata/wp8_parser.js
+++ b/cordova-lib/src/cordova/metadata/wp8_parser.js
@@ -31,7 +31,7 @@ var fs = require('fs'),
ConfigParser = require('../../configparser/ConfigParser'),
CordovaError = require('../../CordovaError'),
xml = require('../../util/xml-helpers'),
- config = require('../config'),
+ lazy_load = require('../lazy_load'),
hooker = require('../hooker'),
csproj = require('../../util/windows/csproj');
@@ -50,13 +50,13 @@ module.exports = function wp8_parser(project) {
};
// Returns a promise.
-module.exports.check_requirements = function(project_root) {
- events.emit('log', 'Checking wp8 requirements...');
- var lib_path = path.join(util.libDirectory, 'wp', 'cordova', require('../platforms').wp8.version, 'wp8');
- var custom_path = config.has_custom_path(project_root, 'wp8');
- if (custom_path) {
- lib_path = path.join(custom_path, 'wp8');
+module.exports.check_requirements = function(project_root, lib_path) {
+ if (lib_path === undefined) {
+ return lazy_load.based_on_config(project_root, 'wp8').then(function (lib_path) {
+ return module.exports.check_requirements(project_root, lib_path);
+ });
}
+ events.emit('log', 'Checking wp8 requirements...');
var command = '"' + path.join(lib_path, 'bin', 'check_reqs') + '"';
events.emit('verbose', 'Running "' + command + '" (output to follow)');
var d = Q.defer();
http://git-wip-us.apache.org/repos/asf/cordova-lib/blob/3911876c/cordova-lib/src/cordova/platform.js
----------------------------------------------------------------------
diff --git a/cordova-lib/src/cordova/platform.js b/cordova-lib/src/cordova/platform.js
index 1c9b930..06d1962 100644
--- a/cordova-lib/src/cordova/platform.js
+++ b/cordova-lib/src/cordova/platform.js
@@ -120,7 +120,7 @@ function add(hooks, projectRoot, targets, opts) {
return p
.then(function(libDir) {
- var template = config_json.lib && config_json.lib[platform] && config_json.lib[platform].template || null;
+ var template = config_json && config_json.lib && config_json.lib[platform] && config_json.lib[platform].template || null;
var copts = null;
if ('spawnoutput' in opts) {
copts = opts.spawnoutput;
@@ -414,7 +414,10 @@ function supports(project_root, name) {
}
// Check for platform support.
- return platformParser.check_requirements(project_root);
+ return lazy_load.based_on_config(project_root, name)
+ .then(function(libDir) {
+ return platformParser.check_requirements(project_root, libDir);
+ });
}
// Returns a promise.
http://git-wip-us.apache.org/repos/asf/cordova-lib/blob/3911876c/cordova-lib/src/cordova/platforms.js
----------------------------------------------------------------------
diff --git a/cordova-lib/src/cordova/platforms.js b/cordova-lib/src/cordova/platforms.js
index 9fcfac7..3bc739a 100644
--- a/cordova-lib/src/cordova/platforms.js
+++ b/cordova-lib/src/cordova/platforms.js
@@ -49,6 +49,7 @@ module.exports = {
parser : './metadata/wp8_parser',
url : 'https://git-wip-us.apache.org/repos/asf?p=cordova-wp8.git',
version: '3.5.0',
+ altplatform: 'wp',
subdirectory: 'wp8'
},
'blackberry10' : {