You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by fi...@apache.org on 2012/09/23 20:20:01 UTC
[5/7] git commit: moved lib cloning to util module. `npm test` now
makes sure libraries are all cloend down before running tests.
moved lib cloning to util module. `npm test` now makes sure libraries are all cloend down before running tests.
Project: http://git-wip-us.apache.org/repos/asf/incubator-cordova-labs/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-cordova-labs/commit/f9c043eb
Tree: http://git-wip-us.apache.org/repos/asf/incubator-cordova-labs/tree/f9c043eb
Diff: http://git-wip-us.apache.org/repos/asf/incubator-cordova-labs/diff/f9c043eb
Branch: refs/heads/cordova-client
Commit: f9c043ebe25b11b30847edebfed04916f3c198e2
Parents: 10f372b
Author: Fil Maj <ma...@gmail.com>
Authored: Sat Sep 22 21:04:47 2012 -0700
Committer: Fil Maj <ma...@gmail.com>
Committed: Sat Sep 22 21:04:47 2012 -0700
----------------------------------------------------------------------
package.json | 2 +-
src/platform.js | 54 +-----------------------------------------------
src/util.js | 53 ++++++++++++++++++++++++++++++++++++++++++++++-
test_bootstrap.js | 17 +++++++++++++++
4 files changed, 71 insertions(+), 55 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-cordova-labs/blob/f9c043eb/package.json
----------------------------------------------------------------------
diff --git a/package.json b/package.json
index 6d46f3d..9f419e1 100644
--- a/package.json
+++ b/package.json
@@ -8,7 +8,7 @@
"cordova": "./bin/cordova"
},
"scripts": {
- "test": "./node_modules/jasmine-node/bin/jasmine-node --color spec"
+ "test": "node test_bootstrap.js && ./node_modules/jasmine-node/bin/jasmine-node --color spec"
},
"repository": {
"type": "git",
http://git-wip-us.apache.org/repos/asf/incubator-cordova-labs/blob/f9c043eb/src/platform.js
----------------------------------------------------------------------
diff --git a/src/platform.js b/src/platform.js
index 023387a..9544727 100644
--- a/src/platform.js
+++ b/src/platform.js
@@ -10,58 +10,6 @@ var config_parser = require('./config_parser'),
ios_parser = require('./metadata/ios_parser'),
asyncblock = require('asyncblock');
-var repos = {
- ios:'https://git-wip-us.apache.org/repos/asf/incubator-cordova-ios.git',
- android:'https://git-wip-us.apache.org/repos/asf/incubator-cordova-android.git'
-};
-
-/**
- * checkout a platform from the git repo
- * @param target string platform to get (enum of 'ios' or 'android' for now)
- * @param cfg project configuration object
- * @param flow I/O object to handle synchronous sys calls
- * @throws Javascript Error on failure
- */
-function get_platform_lib(target, cfg, flow) {
- if (!repos[target]) {
- // TODO: this is really a pretty terrible pattern because it kills
- // excecution immediately and prevents cleanup routines. However,
- // I don't want to just spew a stack trace to the user either.
- console.error('platform "' + target + '" not found.');
- process.exit(1);
- }
- // specify which project tag to check out. minimum tag is 2.1.0rc1
- var cordova_lib_tag = '2.1.0';
-
- // Shell out to git.
- var outPath = path.join(__dirname, '..', 'lib', target);
- var cmd = util.format('git clone %s %s', repos[target], outPath);
-
- console.log('Cloning ' + repos[target] + ', this may take a while...');
- exec(cmd, flow.set({
- key:'cloning',
- firstArgIsError:false,
- responseFormat:['err', 'stdout', 'stderr']
- }));
- var buffers = flow.get('cloning');
- if (buffers.err) {
- cfg.remove_platform(target);
- throw ('An error occured during git-clone of ' + repos[target] + '. ' + buffers.err);
- }
-
- // Check out the right version.
- cmd = util.format('cd "%s" && git checkout %s', outPath, cordova_lib_tag);
- exec(cmd, flow.set({
- key:'tagcheckout',
- firstArgIsError:false,
- responseFormat:['err', 'stdout', 'stderr']
- }));
- buffers = flow.get('tagcheckout');
- if (buffers.err) {
- cfg.remove_platform(target);
- throw ('An error occured during git-checkout of ' + outPath + ' to tag ' + cordova_lib_tag + '. ' + buffers.err);
- }
-}
module.exports = function platform(command, target, callback) {
var projectRoot = cordova_util.isCordova(process.cwd());
@@ -87,7 +35,7 @@ module.exports = function platform(command, target, callback) {
// If the Cordova library for this platform is missing, get it.
if (!cordova_util.havePlatformLib(target)) {
- get_platform_lib(target, cfg, flow);
+ cordova_util.getPlatformLib(target, flow);
}
// Create a platform app using the ./bin/create scripts that exist in each repo.
http://git-wip-us.apache.org/repos/asf/incubator-cordova-labs/blob/f9c043eb/src/util.js
----------------------------------------------------------------------
diff --git a/src/util.js b/src/util.js
index 6f3057b..13bf5e7 100644
--- a/src/util.js
+++ b/src/util.js
@@ -1,5 +1,12 @@
var fs = require('fs'),
- path = require('path');
+ path = require('path'),
+ util = require('util'),
+ exec = require('child_process').exec;
+
+var repos = {
+ ios:'https://git-wip-us.apache.org/repos/asf/incubator-cordova-ios.git',
+ android:'https://git-wip-us.apache.org/repos/asf/incubator-cordova-android.git'
+};
module.exports = {
// Runs up the directory chain looking for a .cordova directory.
@@ -23,5 +30,49 @@ module.exports = {
havePlatformLib: function havePlatformLib(platform) {
var dir = path.join(__dirname, '..', 'lib', platform);
return fs.existsSync(dir);
+ },
+ /**
+ * checkout a platform from the git repo
+ * @param target string platform to get (enum of 'ios' or 'android' for now)
+ * @param flow I/O object to handle synchronous sys calls
+ * @throws Javascript Error on failure
+ */
+ getPlatformLib: function getPlatformLib(target, flow) {
+ if (!repos[target]) {
+ // TODO: this is really a pretty terrible pattern because it kills
+ // excecution immediately and prevents cleanup routines. However,
+ // I don't want to just spew a stack trace to the user either.
+ console.error('platform "' + target + '" not found.');
+ process.exit(1);
+ }
+ // specify which project tag to check out. minimum tag is 2.1.0rc1
+ var cordova_lib_tag = '2.1.0';
+
+ // Shell out to git.
+ var outPath = path.join(__dirname, '..', 'lib', target);
+ var cmd = util.format('git clone %s "%s"', repos[target], outPath);
+
+ console.log('Cloning ' + repos[target] + ', this may take a while...');
+ exec(cmd, flow.set({
+ key:'cloning',
+ firstArgIsError:false,
+ responseFormat:['err', 'stdout', 'stderr']
+ }));
+ var buffers = flow.get('cloning');
+ if (buffers.err) {
+ throw ('An error occured during git-clone of ' + repos[target] + '. ' + buffers.err);
+ }
+
+ // Check out the right version.
+ cmd = util.format('cd "%s" && git checkout %s', outPath, cordova_lib_tag);
+ exec(cmd, flow.set({
+ key:'tagcheckout',
+ firstArgIsError:false,
+ responseFormat:['err', 'stdout', 'stderr']
+ }));
+ buffers = flow.get('tagcheckout');
+ if (buffers.err) {
+ throw ('An error occured during git-checkout of ' + outPath + ' to tag ' + cordova_lib_tag + '. ' + buffers.err);
+ }
}
};
http://git-wip-us.apache.org/repos/asf/incubator-cordova-labs/blob/f9c043eb/test_bootstrap.js
----------------------------------------------------------------------
diff --git a/test_bootstrap.js b/test_bootstrap.js
new file mode 100644
index 0000000..41e51dc
--- /dev/null
+++ b/test_bootstrap.js
@@ -0,0 +1,17 @@
+var fs = require('fs'),
+ path = require('path'),
+ util = require('./src/util'),
+ asyncblock = require('asyncblock'),
+ platforms = require('./platforms');
+
+// Simply detects whether all platform libs have been cloned.
+
+asyncblock(function(flow) {
+ platforms.forEach(function(p) {
+ if (!fs.existsSync(path.join(__dirname, 'lib', p))) {
+ util.getPlatformLib(p, flow);
+ }
+ });
+ process.exit(0);
+});
+