You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by bo...@apache.org on 2013/06/19 00:05:11 UTC
[1/2] android commit: Updating Javascript
Updated Branches:
refs/heads/2.9.x a83bbcaf1 -> 1f58d8ee2
Updating Javascript
Project: http://git-wip-us.apache.org/repos/asf/cordova-android/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-android/commit/fb4527d9
Tree: http://git-wip-us.apache.org/repos/asf/cordova-android/tree/fb4527d9
Diff: http://git-wip-us.apache.org/repos/asf/cordova-android/diff/fb4527d9
Branch: refs/heads/2.9.x
Commit: fb4527d91b70dbff39b8eb0bd510ac7c1deeeeff
Parents: a83bbca
Author: Joe Bowser <bo...@apache.org>
Authored: Tue Jun 18 13:24:53 2013 -0700
Committer: Joe Bowser <bo...@apache.org>
Committed: Tue Jun 18 13:24:53 2013 -0700
----------------------------------------------------------------------
framework/assets/www/cordova.js | 41 +++++++++++++++++++++++++++---------
1 file changed, 31 insertions(+), 10 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cordova-android/blob/fb4527d9/framework/assets/www/cordova.js
----------------------------------------------------------------------
diff --git a/framework/assets/www/cordova.js b/framework/assets/www/cordova.js
index e638234..c6fefd5 100644
--- a/framework/assets/www/cordova.js
+++ b/framework/assets/www/cordova.js
@@ -1,5 +1,5 @@
// Platform: android
-// 2.7.0rc1-75-g76065a1
+// 2.9.0rc1-0-g11df4b7
/*
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
@@ -19,7 +19,7 @@
under the License.
*/
;(function() {
-var CORDOVA_JS_BUILD_LABEL = '2.7.0rc1-75-g76065a1';
+var CORDOVA_JS_BUILD_LABEL = '2.9.0rc1-0-g11df4b7';
// file: lib/scripts/require.js
var require,
@@ -2396,11 +2396,7 @@ function initRead(reader, file) {
reader._error = null;
reader._readyState = FileReader.LOADING;
- if (typeof file == 'string') {
- // Deprecated in Cordova 2.4.
- console.warn('Using a string argument with FileReader.readAs functions is deprecated.');
- reader._fileName = file;
- } else if (typeof file.fullPath == 'string') {
+ if (typeof file.fullPath == 'string') {
reader._fileName = file.fullPath;
} else {
reader._fileName = '';
@@ -3063,9 +3059,31 @@ FileWriter.prototype.abort = function() {
/**
* Writes data to the file
*
- * @param text to be written
+ * @param data text or blob to be written
*/
-FileWriter.prototype.write = function(text) {
+FileWriter.prototype.write = function(data) {
+
+ var isBinary = false;
+
+ // If we don't have Blob or ArrayBuffer support, don't bother.
+ if (typeof window.Blob !== 'undefined' && typeof window.ArrayBuffer !== 'undefined') {
+
+ // Check to see if the incoming data is a blob
+ if (data instanceof Blob) {
+ var that=this;
+ var fileReader = new FileReader();
+ fileReader.onload = function() {
+ // Call this method again, with the arraybuffer as argument
+ FileWriter.prototype.write.call(that, this.result);
+ };
+ fileReader.readAsArrayBuffer(data);
+ return;
+ }
+
+ // Mark data type for safer transport over the binary bridge
+ isBinary = (data instanceof ArrayBuffer);
+ }
+
// Throw an exception if we are already writing a file
if (this.readyState === FileWriter.WRITING) {
throw new FileError(FileError.INVALID_STATE_ERR);
@@ -3131,7 +3149,7 @@ FileWriter.prototype.write = function(text) {
if (typeof me.onwriteend === "function") {
me.onwriteend(new ProgressEvent("writeend", {"target":me}));
}
- }, "File", "write", [this.fileName, text, this.position]);
+ }, "File", "write", [this.fileName, data, this.position, isBinary]);
};
/**
@@ -3317,6 +3335,9 @@ InAppBrowser.prototype = {
close: function (eventname) {
exec(null, null, "InAppBrowser", "close", []);
},
+ show: function (eventname) {
+ exec(null, null, "InAppBrowser", "show", []);
+ },
addEventListener: function (eventname,f) {
if (eventname in this.channels) {
this.channels[eventname].subscribe(f);
[2/2] android commit: [CB-3625] [CB-3338] updated windows cli scripts
and added version option
Posted by bo...@apache.org.
[CB-3625] [CB-3338] updated windows cli scripts and added version option
Project: http://git-wip-us.apache.org/repos/asf/cordova-android/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-android/commit/1f58d8ee
Tree: http://git-wip-us.apache.org/repos/asf/cordova-android/tree/1f58d8ee
Diff: http://git-wip-us.apache.org/repos/asf/cordova-android/diff/1f58d8ee
Branch: refs/heads/2.9.x
Commit: 1f58d8ee27c9ea00c3bc7bf60eed144725c5ce43
Parents: fb4527d
Author: Benn Mapes <be...@gmail.com>
Authored: Tue Jun 18 14:54:59 2013 -0700
Committer: Joe Bowser <bo...@apache.org>
Committed: Tue Jun 18 15:04:56 2013 -0700
----------------------------------------------------------------------
bin/create.js | 19 +-
bin/templates/cordova/lib/cordova.js | 554 +++++++++++++++---------------
bin/templates/cordova/version.bat | 18 +
3 files changed, 305 insertions(+), 286 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cordova-android/blob/1f58d8ee/bin/create.js
----------------------------------------------------------------------
diff --git a/bin/create.js b/bin/create.js
index 07c2e56..1cb794f 100644
--- a/bin/create.js
+++ b/bin/create.js
@@ -106,20 +106,6 @@ function createAppInfoJar() {
}
}
-function cleanup() {
- // Cleanup
-// if(fso.FileExists(ROOT + '\\framework\\libs\\commons-codec-1.6.jar')) {
-// fso.DeleteFile(ROOT + '\\framework\\libs\\commons-codec-1.6.jar');
-// fso.DeleteFolder(ROOT + '\\framework\\libs', true);
-// }
- if(fso.FileExists(ROOT + '\\framework\\cordova-'+VERSION+'.jar')) {
- fso.DeleteFile(ROOT + '\\framework\\cordova-'+VERSION+'.jar');
- }
- if(fso.FileExists(ROOT + '\\framework\\assets\\www\\cordova-'+VERSION+'.js')) {
- fso.DeleteFile(ROOT + '\\framework\\assets\\www\\cordova-'+VERSION+'.js');
- }
-}
-
// working dir
var ROOT = WScript.ScriptFullName.split('\\bin\\create.js').join('');
if (args.Count() > 0) {
@@ -212,6 +198,7 @@ exec('%comspec% /c copy "'+ROOT+'\\bin\\templates\\cordova\\clean.bat" "' + PROJ
exec('%comspec% /c copy "'+ROOT+'\\bin\\templates\\cordova\\build.bat" "' + PROJECT_PATH + '\\cordova\\build.bat" /Y');
exec('%comspec% /c copy "'+ROOT+'\\bin\\templates\\cordova\\log.bat" "' + PROJECT_PATH + '\\cordova\\log.bat" /Y');
exec('%comspec% /c copy "'+ROOT+'\\bin\\templates\\cordova\\run.bat" "' + PROJECT_PATH + '\\cordova\\run.bat" /Y');
+exec('%comspec% /c copy "'+ROOT+'\\bin\\templates\\cordova\\version.bat" "' + PROJECT_PATH + '\\cordova\\version.bat" /Y');
// interpolate the activity name and package
Log("Updating AndroidManifest.xml and Main Activity...");
@@ -220,6 +207,4 @@ replaceInFile(ACTIVITY_PATH, /__ID__/, PACKAGE);
replaceInFile(MANIFEST_PATH, /__ACTIVITY__/, ACTIVITY);
replaceInFile(MANIFEST_PATH, /__PACKAGE__/, PACKAGE);
-replaceInFile(MANIFEST_PATH, /__APILEVEL__/, API_LEVEL);
-
-cleanup();
+replaceInFile(MANIFEST_PATH, /__APILEVEL__/, API_LEVEL);
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cordova-android/blob/1f58d8ee/bin/templates/cordova/lib/cordova.js
----------------------------------------------------------------------
diff --git a/bin/templates/cordova/lib/cordova.js b/bin/templates/cordova/lib/cordova.js
index 28f9b3e..e082189 100644
--- a/bin/templates/cordova/lib/cordova.js
+++ b/bin/templates/cordova/lib/cordova.js
@@ -18,6 +18,21 @@
var ROOT = WScript.ScriptFullName.split('\\cordova\\lib\\cordova.js').join(''),
shell = WScript.CreateObject("WScript.Shell"),
fso = WScript.CreateObject('Scripting.FileSystemObject');
+//device_id for targeting specific device
+var device_id;
+//build types
+var NONE = 0,
+ DEBUG = '--debug',
+ RELEASE = '--release',
+ NO_BUILD = '--nobuild';
+var build_type = NONE;
+
+//deploy tpyes
+var NONE = 0,
+ EMULATOR = 1,
+ DEVICE = 2,
+ TARGET = 3;
+var deploy_type = NONE;
// log to stdout or stderr
@@ -86,6 +101,25 @@ function exec_verbose(command) {
}
}
+function version(path) {
+ var cordovajs_path = path + "\\assets\\www\\cordova.js";
+ if(fso.FileExists(cordovajs_path)) {
+ var f = fso.OpenTextFile(cordovajs_path, 1,2);
+ var cordovajs = f.ReadAll();
+ f.Close();
+ var version_regex = /^.*CORDOVA_JS_BUILD_LABEL.*$/m;
+ var version_line = cordovajs.match(version_regex) + "";
+ var version = version_line.match(/(\d+)\.(\d+)\.(\d+)(rc\d)?/) + "";
+ // TODO : figure out why this isn't matching properly so we can remove this substring workaround.
+ Log(version.substr(0, ((version.length/2) -1)));
+ } else {
+ Log("Error : Could not find cordova js.", true);
+ Log("Expected Location : " + cordovajs_path, true);
+ WScript.Quit(2);
+ }
+
+}
+
function get_devices() {
var device_list = []
var local_devices = shell.Exec("%comspec% /c adb devices").StdOut.ReadAll();
@@ -117,38 +151,18 @@ function list_devices() {
}
function get_emulator_images() {
- // discription contains all data recieved squashed onto one line
- var add_description = true;
var avd_list = [];
var local_emulators = shell.Exec("%comspec% /c android list avds").StdOut.ReadAll();
if (local_emulators.match(/Name\:/)) {
emulators = local_emulators.split('\n');
- //format (ID DESCRIPTION)
var count = 0;
var output = '';
for (i in emulators) {
+ // Find the line with the emulator name.
if (emulators[i].match(/Name\:/)) {
+ // strip description
var emulator_name = emulators[i].replace(/\s*Name\:\s/, '') + ' ';
- if (add_description) {
- count = 1;
- output += emulator_name
- }
- else {
- avd_list.push(emulator_name);
- }
- }
- // add description if indicated (all data squeezed onto one line)
- if (count > 0) {
- var emulator_description = emulators[i].replace(/\s*/g, '');
- if (count > 4) {
- avd_list.push(output + emulator_description);
- count = 0;
- output = '';
- }
- else {
- count++;
- output += emulator_description + ' '
- }
+ avd_list.push(emulator_name);
}
}
}
@@ -192,8 +206,21 @@ function list_started_emulators() {
}
}
else {
- Log('No started emulators found, if you would like to start an emulator call \'list-emulator-images\'');
- Log(' to get the name of an emulator and then start the emulator with \'start-emulator <Name>\'');
+ Log('No started emulators found, if you would like to start an emulator call ');
+ Log('\'list-emulator-images\'');
+ Log(' to get the name of an emulator and then start the emulator with');
+ Log('\'start-emulator <Name>\'');
+ }
+}
+
+function create_emulator() {
+ //get targets
+ var targets = shell.Exec('android.bat list targets').StdOut.ReadAll().match(/id:\s\d+/g);
+ if(targets) {
+ exec('%comspec% /c android create avd --name cordova_emulator --target ' + targets[targets.length - 1].replace(/id: /, ""));
+ } else {
+ Log("You do not have any android targets setup. Please create at least one target with the `android` command so that an emulator can be created.", true);
+ WScript.Quit(69);
}
}
@@ -207,14 +234,14 @@ function start_emulator(name) {
for (i in emulators) {
if (emulators[i].substr(0,name.length) == name) {
Log("Starting emulator : " + name);
- shell.Run("%comspec% /c start cmd /c emulator -avd " + name);
+ shell.Exec("%comspec% /c emulator -avd " + name + " &");
//shell.Run("%comspec% /c start cmd /c emulator -cpu-delay 0 -no-boot-anim -cache %Temp%\cache -avd " + name);
started = true;
}
}
}
else {
- if (emulators.length > 0 && started_emulators < 1) {
+ if (emulators.length > 0 && started_emulators.length == 0) {
emulator_name = emulators[0].split(' ', 1)[0];
start_emulator(emulator_name);
return;
@@ -230,15 +257,16 @@ function start_emulator(name) {
Log("Error : unable to start emulator, ensure you have emulators availible by checking \'list-emulator-images\'", true);
WScript.Quit(2);
}
- else { // wait for emulator to boot before returning
- WScript.Stdout.Write('Booting up emulator..');
+ else {
+ // wait for emulator to get the ID
+ Log('Waiting for emulator...');
var boot_anim = null;
var emulator_ID = null;
- var new_started = get_started_emulators();
+ var new_started = null;
var i = 0;
- // use boot animation property to tell when boot is complete.
- while ((boot_anim == null || !boot_anim.output.match(/stopped/)) && i < 100) {
- if (new_started.length > started_emulators.length && emulator_ID == null) {
+ while(emulator_ID == null && i < 10) {
+ new_started = get_started_emulators();
+ if(new_started.length > started_emulators.length) {
// find new emulator that was just started to get it's ID
for(var i = 0; i < new_started.length; i++) {
if (new_started[i] != started_emulators[i]) {
@@ -248,18 +276,25 @@ function start_emulator(name) {
}
}
}
- else if (boot_anim == null) {
- new_started = get_started_emulators();
- }
- else {
- boot_anim = exec_out('%comspec% /c adb -s ' + emulator_ID + ' shell getprop init.svc.bootanim');
- }
+ }
+ if (i == 10) {
+ Log('\nEmulator start timed out.');
+ WScript.Quit(2);
+ }
+ i = 0;
+ WScript.Stdout.Write('Booting up emulator (this may take a while).');
+ // use boot animation property to tell when boot is complete.
+ while (!boot_anim.output.match(/stopped/) && i < 100) {
+ boot_anim = exec_out('%comspec% /c adb -s ' + emulator_ID + ' shell getprop init.svc.bootanim');
i++;
WScript.Stdout.Write('.');
WScript.Sleep(2000);
}
+
if (i < 100) {
Log('\nBoot Complete!');
+ // Unlock the device
+ shell.Exec("%comspec% /c adb -s " + emulator_ID + " shell input keyevent 82");
} else {
Log('\nEmulator boot timed out. Failed to load emulator');
WScript.Quit(2);
@@ -267,34 +302,11 @@ function start_emulator(name) {
}
}
-function install_device(target) {
- var devices = get_devices();
- var use_target = false;
- if (devices.length < 1) {
- Log("Error : No devices found to install to, make sure there are devices", true);
- Log(" availible by checking \'<project_dir>\\cordova\\lib\\list-devices\'", true);
- WScript.Quit(2);
- }
- if (target) {
- var exists = false;
- for (i in devices) {
- if (devices[i].substr(0,target.length) == target)
- {
- exists = true;
- break;
- }
- }
- if (!exists) {
- Log("Error : Unable to find target " + target, true);
- Log("Please ensure the target exists by checking \'<project>\\cordova\\lib\\list-devices'");
- WScript.Quit(2);
- }
- use_target = true;
- }
+function get_apk(path) {
// check if file .apk has been created
- if (fso.FolderExists(ROOT + '\\bin')) {
+ if (fso.FolderExists(path + '\\bin')) {
var path_to_apk;
- var out_folder = fso.GetFolder(ROOT + '\\bin');
+ var out_folder = fso.GetFolder(path + '\\bin');
var out_files = new Enumerator(out_folder.Files);
for (;!out_files.atEnd(); out_files.moveNext()) {
var path = out_files.item() + '';
@@ -304,38 +316,7 @@ function install_device(target) {
}
}
if (path_to_apk) {
- var launch_name = exec_out("%comspec% /c java -jar "+ROOT+"\\cordova\\appinfo.jar "+ROOT+"\\AndroidManifest.xml");
- if (launch_name.error) {
- Log("Failed to get application name from appinfo.jar + AndroidManifest : ", true);
- Log("Output : " + launch_name.output, true);
- WScript.Quit(2);
- }
- // install on device (-d)
- Log("Installing app on device...");
- var cmd;
- if (use_target) {
- cmd = '%comspec% /c adb -s ' + target + ' install -r ' + path_to_apk;
- } else {
- cmd = '%comspec% /c adb -s ' + devices[0].split(' ', 1)[0] + ' install -r ' + path_to_apk;
- }
- var install = exec_out(cmd);
- if ( install.error && install.output.match(/Failure/)) {
- Log("Error : Could not install apk to device : ", true);
- Log(install.output, true);
- WScript.Quit(2);
- }
- else {
- Log(install.output);
- }
- // run on device
- Log("Launching application...");
- cmd;
- if (use_target) {
- cmd = '%comspec% /c adb -s ' + target + ' shell am start -W -a android.intent.action.MAIN -n ' + launch_name.output;
- } else {
- cmd = '%comspec% /c adb -s ' + devices[0].split(' ', 1)[0] + ' shell am start -W -a android.intent.action.MAIN -n ' + launch_name.output;
- }
- exec_verbose(cmd);
+ return path_to_apk;
}
else {
Log('Failed to find apk, make sure you project is built and there is an ', true);
@@ -345,7 +326,18 @@ function install_device(target) {
}
}
-function install_emulator(target) {
+function install_device(path) {
+ var devices = get_devices();
+ var use_target = false;
+ if (devices.length < 1) {
+ Log("Error : No devices found to install to, make sure there are devices", true);
+ Log(" availible by checking \'<project_dir>\\cordova\\lib\\list-devices\'", true);
+ WScript.Quit(2);
+ }
+ launch(path, devices[0].split(' ', 1)[0], true);
+}
+
+function install_emulator(path) {
var emulators = get_started_emulators();
var use_target = false;
if (emulators.length < 1) {
@@ -353,46 +345,59 @@ function install_emulator(target) {
Log(" availible by checking \'<project_dir>\\cordova\\lib\\list-started-emulators\'", true);
WScript.Quit(2);
}
- if (target) {
+ launch(path, emulators[0].split(' ', 1)[0], false);
+}
+
+function install_target(path) {
+ if(device_id) {
+ var device = false;
+ var emulators = get_started_emulators();
+ var devices = get_devices();
var exists = false;
for (i in emulators) {
- if (emulators[i].substr(0,target.length) == target)
- {
+ if (emulators[i].substr(0,device_id.length) == device_id) {
exists = true;
break;
}
}
- if (!exists) {
- Log("Error : Unable to find target " + target, true);
- Log("Please ensure the target exists by checking \'<project>\\cordova\\lib\\list-started-emulators'")
- }
- use_target = true;
- } else {
- target = emulators[0].split(' ', 1)[0];
- Log("Deploying to emulator : " + target);
- }
- // check if file .apk has been created
- if (fso.FolderExists(ROOT + '\\bin')) {
- var path_to_apk;
- var out_folder = fso.GetFolder(ROOT + '\\bin');
- var out_files = new Enumerator(out_folder.Files);
- for (;!out_files.atEnd(); out_files.moveNext()) {
- var path = out_files.item() + '';
- if (fso.GetExtensionName(path) == 'apk' && !path.match(/unaligned/)) {
- path_to_apk = out_files.item();
+ for (i in devices) {
+ if (devices[i].substr(0,device_id.length) == device_id) {
+ exists = true;
+ device = true
break;
}
}
+ if (!exists) {
+ Log("Error : Unable to find target " + device_id, true);
+ Log("Please ensure the target exists by checking \'<project>\\cordova\\lib\\list-started-emulators'");
+ Log(" Or \'<project>\\cordova\\lib\\list-devices'");
+ }
+ launch(path, device_id, device);
+ }
+ else {
+ Log("You cannot install to a target without providing a valid target ID.", true);
+ WScript.Quit(2);
+ }
+}
+
+function launch(path, id, device) {
+ if(id) {
+ var path_to_apk = get_apk(path);
if (path_to_apk) {
- var launch_name = exec_out("%comspec% /c java -jar "+ROOT+"\\cordova\\appinfo.jar "+ROOT+"\\AndroidManifest.xml");
+ var launch_name = exec_out("%comspec% /c java -jar "+path+"\\cordova\\appinfo.jar "+path+"\\AndroidManifest.xml");
if (launch_name.error) {
Log("Failed to get application name from appinfo.jar + AndroidManifest : ", true);
Log("Output : " + launch_name.output, true);
WScript.Quit(2);
}
- // install on emulator (-e)
- Log("Installing app on emulator...");
- var cmd = '%comspec% /c adb -s ' + target + ' install -r ' + path_to_apk;
+ if (device) {
+ // install on device (-d)
+ Log("Installing app on device...");
+ } else {
+ // install on emulator (-e)
+ Log("Installing app on emulator...");
+ }
+ var cmd = '%comspec% /c adb -s ' + id + ' install -r ' + path_to_apk;
var install = exec_out(cmd);
if ( install.error && install.output.match(/Failure/)) {
Log("Error : Could not install apk to emulator : ", true);
@@ -402,14 +407,9 @@ function install_emulator(target) {
else {
Log(install.output);
}
- // run on emulator
+ // launch the application
Log("Launching application...");
- cmd;
- if (use_target) {
- cmd = '%comspec% /c adb -s ' + target + ' shell am start -W -a android.intent.action.MAIN -n ' + launch_name.output;
- } else {
- cmd = '%comspec% /c adb -s ' + emulators[0].split(' ', 1)[0] + ' shell am start -W -a android.intent.action.MAIN -n ' + launch_name.output
- }
+ cmd = '%comspec% /c adb -s ' + id + ' shell am start -W -a android.intent.action.MAIN -n ' + launch_name.output;
exec_verbose(cmd);
}
else {
@@ -419,43 +419,14 @@ function install_emulator(target) {
}
}
else {
- Log('Failed to find apk, make sure you project is built and there is an ', true);
- Log(' apk in <project>\\bin\\. To build your project use \'<project>\\cordova\\build\'', true);
+ Log("You cannot install to a target without providing a valid target ID.", true);
WScript.Quit(2);
}
}
-function clean() {
+function clean(path) {
Log("Cleaning project...");
- exec("%comspec% /c ant.bat clean -f "+ROOT+"\\build.xml 2>&1");
-}
-
-function build(build_type) {
- if (build_type) {
- switch (build_type) {
- case "--debug" :
- clean();
- Log("Building project...");
- exec_verbose("%comspec% /c ant.bat debug -f "+ROOT+"\\build.xml 2>&1");
- break;
- case "--release" :
- clean();
- Log("Building project...");
- exec_verbose("%comspec% /c ant.bat release -f "+ROOT+"\\build.xml 2>&1");
- break;
- case "--nobuild" :
- Log("Skipping build process.");
- break;
- default :
- Log("Build option not recognized: " + build_type, true);
- WScript.Quit(2);
- break;
- }
- }
- else {
- Log("WARNING: [ --debug | --release | --nobuild ] not specified, defaulting to --debug.");
- exec_verbose("%comspec% /c ant.bat debug -f "+ROOT+"\\build.xml 2>&1");
- }
+ exec("%comspec% /c ant.bat clean -f "+path+"\\build.xml 2>&1");
}
function log() {
@@ -463,131 +434,176 @@ function log() {
shell.Run("%comspec% /c adb logcat | grep -v nativeGetEnabledTags");
}
-function run(target, build_type) {
- var use_target = false;
- if (!target) {
- Log("WARNING: [ --target=<ID> | --emulator | --device ] not specified, using defaults");
- }
- // build application
- build(build_type);
- // attempt to deploy to connected device
- var devices = get_devices();
- if (devices.length > 0 || target == "--device") {
- if (target) {
- if (target.substr(0,9) == "--target=") {
- install_device(target.split('--target=').join(''))
- } else if (target == "--device") {
- install_device();
- } else {
- Log("Did not regognize " + target + " as a run option.", true);
- WScript.Quit(2);
- }
- }
- else {
- Log("WARNING: [ --target=<ID> | --emulator | --device ] not specified, using defaults");
- install_device();
- }
+function build(path) {
+ switch (build_type) {
+ case DEBUG :
+ clean(path);
+ Log("Building project...");
+ exec_verbose("%comspec% /c ant.bat debug -f "+path+"\\build.xml 2>&1");
+ break;
+ case RELEASE :
+ clean(path);
+ Log("Building project...");
+ exec_verbose("%comspec% /c ant.bat release -f "+path+"\\build.xml 2>&1");
+ break;
+ case NO_BUILD :
+ Log("Skipping build process.");
+ break;
+ case NONE :
+ clean(path);
+ Log("WARNING: [ --debug | --release | --nobuild ] not specified, defaulting to --debug.");
+ exec_verbose("%comspec% /c ant.bat debug -f "+path+"\\build.xml 2>&1");
+ break;
+ default :
+ Log("Build option not recognized: " + build_type, true);
+ WScript.Quit(2);
+ break;
}
- else {
- var emulators = get_started_emulators();
- if (emulators.length > 0) {
- install_emulator();
- }
- else {
- var emulator_images = get_emulator_images();
- if (emulator_images.length < 1) {
- Log('No emulators found, if you would like to create an emulator follow the instructions', true);
- Log(' provided here : http://developer.android.com/tools/devices/index.html', true);
- Log(' Or run \'android create avd --name <name> --target <targetID>\' in on the command line.', true);
- WScript.Quit(2);
- }
- start_emulator(emulator_images[0].split(' ')[0]);
- emulators = get_started_emulators();
- if (emulators.length > 0) {
- install_emulator();
+}
+
+function run(path) {
+ switch(deploy_type) {
+ case EMULATOR :
+ build(path);
+ if(get_started_emulators().length == 0) {
+ start_emulator();
}
- else {
- Log("Error : emulator failed to start.", true);
- WScript.Quit(2);
+ //TODO : Start emulator if one isn't started, and create one if none exists.
+ install_emulator(path);
+ break;
+ case DEVICE :
+ build(path);
+ install_device(path);
+ break;
+ case TARGET :
+ build(path);
+ install_target(path);
+ break;
+ case NONE :
+ if (get_devices().length > 0) {
+ Log("WARNING: [ --target=<ID> | --emulator | --device ] not specified, defaulting to --device");
+ deploy_type = DEVICE;
+ } else {
+ Log("WARNING: [ --target=<ID> | --emulator | --device ] not specified, defaulting to --emulator");
+ deploy_type = EMULATOR;
}
- }
+ run(path);
+ break;
+ default :
+ Log("Deploy option not recognized: " + deploy_type, true);
+ WScript.Quit(2);
+ break;
}
}
+
var args = WScript.Arguments;
if (args.count() == 0) {
Log("Error: no args provided.");
WScript.Quit(2);
}
else {
- if (args(0) == "build") {
- if (args.Count() > 1) {
- build(args(1))
- } else {
- build();
- }
- } else if (args(0) == "clean") {
- clean();
- } else if (args(0) == "list-devices") {
- list_devices();
- } else if (args(0) == "list-emulator-images") {
- list_emulator_images();
- } else if (args(0) == "list-started-emulators") {
- list_started_emulators();
- } else if (args(0) == "start-emulator") {
- if (args.Count() > 1) {
- start_emulator(args(1))
- } else {
- start_emulator();
- }
- } else if (args(0) == "log") {
- log();
- } else if (args(0) == "install-emulator") {
- if (args.Count() == 2) {
- if (args(1).substr(0,9) == "--target=") {
- install_emulator(args(1).split('--target=').join(''));
+ // parse command
+ switch(args(0)) {
+ case "version" :
+ version(ROOT);
+ break;
+ case "build" :
+ if(args.Count() > 1) {
+ if (args(1) == "--release") {
+ build_type = RELEASE;
+ }
+ else if (args(1) == "--debug") {
+ build_type = DEBUG;
+ }
+ else if (args(1) == "--nobuild") {
+ build_type = NO_BUILD;
+ }
+ else {
+ Log('Error: \"' + args(i) + '\" is not recognized as a build option', true);
+ WScript.Quit(2);
+ }
+ }
+ build(ROOT);
+ break;
+ case "clean" :
+ clean();
+ break;
+ case "list-devices" :
+ list_devices();
+ break;
+ case "list-emulator-images" :
+ list_emulator_images();
+ break;
+ case "list-started-emulators" :
+ list_started_emulators();
+ break;
+ case "start-emulator" :
+ if (args.Count() > 1) {
+ start_emulator(args(1))
} else {
- Log('Error: \"' + args(1) + '\" is not recognized as an install option', true);
- WScript.Quit(2);
+ start_emulator();
}
- } else {
- install_emulator();
- }
- } else if (args(0) == "install-device") {
- if (args.Count() == 2) {
- if (args(1).substr(0,9) == "--target=") {
- install_device(args(1).split('--target=').join(''));
+ break;
+ case "install-emulator" :
+ if (args.Count() == 2) {
+ if (args(1).substr(0,9) == "--target=") {
+ device_id = args(1).split('--target=').join('');
+ install_emulator(ROOT);
+ } else {
+ Log('Error: \"' + args(1) + '\" is not recognized as an install option', true);
+ WScript.Quit(2);
+ }
} else {
- Log('Error: \"' + args(1) + '\" is not recognized as an install option', true);
- WScript.Quit(2);
+ install_emulator(ROOT);
}
- } else {
- install_device();
- }
- } else if (args(0) == "run") {
- if (args.Count() == 3) {
- run(args(1), args(2));
- }
- else if (args.Count() == 2) {
- if (args(1).substr(0,9) == "--target=" ||
- args(1) == "--emulator" ||
- args(1) == "--device") {
- run(args(1));
- } else if (args(1) == "--debug" ||
- args(1) == "--release" ||
- args(1) == "--nobuild") {
- run(null, args(1))
+ break;
+ case "install-device" :
+ if (args.Count() == 2) {
+ if (args(1).substr(0,9) == "--target=") {
+ device_id = args(1).split('--target=').join('');
+ install_target(ROOT);
+ } else {
+ Log('Error: \"' + args(1) + '\" is not recognized as an install option', true);
+ WScript.Quit(2);
+ }
} else {
- Log('Error: \"' + args(1) + '\" is not recognized as a run option', true);
- WScript.Quit(2);
+ install_device(ROOT);
}
- }
- else {
- run();
- }
- } else {
- Log('Error: \"' + args(0) + '\" is not recognized as a tooling command', true);
- WScript.Quit(2);
+ break;
+ case "run" :
+ //parse args
+ for(var i = 1; i < args.Count(); i++) {
+ if (args(i) == "--release") {
+ build_type = RELEASE;
+ }
+ else if (args(i) == "--debug") {
+ build_type = DEBUG;
+ }
+ else if (args(i) == "--nobuild") {
+ build_type = NO_BUILD;
+ }
+ else if (args(i) == "--emulator" || args(i) == "-e") {
+ deploy_type = EMULATOR;
+ }
+ else if (args(i) == "--device" || args(i) == "-d") {
+ deploy_type = DEVICE;
+ }
+ else if (args(i).substr(0,9) == "--target=") {
+ device_id = args(i).split("--target=").join("");
+ deploy_type = TARGET;
+ }
+ else {
+ Log('Error: \"' + args(i) + '\" is not recognized as a run option', true);
+ WScript.Quit(2);
+ }
+ }
+ run(ROOT);
+ break;
+ default :
+ Log("Cordova does not regognize the command " + args(0), true);
+ WScript.Quit(2);
+ break;
}
}
http://git-wip-us.apache.org/repos/asf/cordova-android/blob/1f58d8ee/bin/templates/cordova/version.bat
----------------------------------------------------------------------
diff --git a/bin/templates/cordova/version.bat b/bin/templates/cordova/version.bat
new file mode 100644
index 0000000..e70769f
--- /dev/null
+++ b/bin/templates/cordova/version.bat
@@ -0,0 +1,18 @@
+:: Licensed to the Apache Software Foundation (ASF) under one
+:: or more contributor license agreements. See the NOTICE file
+:: distributed with this work for additional information
+:: regarding copyright ownership. The ASF licenses this file
+:: to you under the Apache License, Version 2.0 (the
+:: "License"); you may not use this file except in compliance
+:: with the License. You may obtain a copy of the License at
+::
+:: http://www.apache.org/licenses/LICENSE-2.0
+::
+:: Unless required by applicable law or agreed to in writing,
+:: software distributed under the License is distributed on an
+:: "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+:: KIND, either express or implied. See the License for the
+:: specific language governing permissions and limitations
+:: under the License.
+@ECHO OFF
+%~dp0\cordova.bat version %*
\ No newline at end of file