You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by lo...@apache.org on 2013/05/07 17:13:58 UTC

[11/50] [abbrv] webworks commit: Fixed the runs script for child processes

Fixed the runs script for child processes

Reviewed by Hasan Ahmad <ha...@blackberry.com>
Tested by Tracy Li <tl...@blackberry.com>


Project: http://git-wip-us.apache.org/repos/asf/cordova-blackberry/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-blackberry/commit/99b61a29
Tree: http://git-wip-us.apache.org/repos/asf/cordova-blackberry/tree/99b61a29
Diff: http://git-wip-us.apache.org/repos/asf/cordova-blackberry/diff/99b61a29

Branch: refs/heads/future
Commit: 99b61a291e89ff546abd4e48d53f2ad6f813c254
Parents: eb75c14
Author: DanielAudino <da...@blackberry.com>
Authored: Fri Mar 15 16:22:30 2013 -0400
Committer: Bryan Higgins <bh...@blackberry.com>
Committed: Fri May 3 10:13:29 2013 -0400

----------------------------------------------------------------------
 blackberry10/bin/templates/project/cordova/lib/run |  132 +++++++++++----
 1 files changed, 98 insertions(+), 34 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/99b61a29/blackberry10/bin/templates/project/cordova/lib/run
----------------------------------------------------------------------
diff --git a/blackberry10/bin/templates/project/cordova/lib/run b/blackberry10/bin/templates/project/cordova/lib/run
index 129a1cd..9f47e10 100755
--- a/blackberry10/bin/templates/project/cordova/lib/run
+++ b/blackberry10/bin/templates/project/cordova/lib/run
@@ -26,13 +26,14 @@ var childProcess = require("child_process"),
     pkgrUtils = require("./packager-utils"),
     properties = require('../../project.json'),
     program = require('commander'),
+    xml2js = require('xml2js'),
     target,
     ip,
     password,
     workingdir,
     barPath;
 
-function generateOptions() {
+function generateOptions(uninstall) {
     var options = [];
 
     workingdir = path.normalize(__dirname + "/.."),
@@ -49,31 +50,32 @@ function generateOptions() {
     options.push("-package");
     options.push(barPath);
 
-    if (program.uninstall) {
+    if (uninstall) {
         options.push("-uninstallApp");
-        execNativeDeploy(options, null);
-        options.pop();
-    }
+        return options;
+    } else {
 
-    options.push("-installApp");
+        options.push("-installApp");
 
-    if (program.launch) {
-        options.push("-launchApp");
-    }
+        if (program.launch) {
+            options.push("-launchApp");
+        }
 
-    return options;
+        return options;
+    }
 }
 
-function execNativeDeploy(options, callback) {
+function execNativeDeploy(optionsArray, callback) {
     var script = "/bin/blackberry-deploy",
         nativeDeploy;
+        options = optionsArray.join(" ");
 
     if (pkgrUtils.isWindows()) {
         script += ".bat";
     }
 
     if (fs.existsSync(conf.DEPENDENCIES_TOOLS)) {
-        nativeDeploy = childProcess.spawn(path.normalize(conf.DEPENDENCIES_TOOLS + script), options, {
+        nativeDeploy = childProcess.exec(path.normalize(conf.DEPENDENCIES_TOOLS + script +" "+ options), {
             "cwd": workingdir,
             "env": process.env
         });
@@ -93,48 +95,110 @@ function execNativeDeploy(options, callback) {
 }
 
 function checkTarget() {
-    if (!properties.targets[target]){
+    if (!target) {
+        console.log("No target exists, to add that target please run target add <name> <ip> <type> [-p <password>] [--pin <devicepin>]\n");
+        return false;
+    }
+    if (!properties.targets[target]) {
         console.log("The target \""+target+"\" does not exist, to add that target please run target add "+target+" <ip> <type> [-p <password>] [--pin <devicepin>]\n");
         return false;
     }
-    if (properties.targets[target].ip){
+    if (properties.targets[target].ip) {
        ip = properties.targets[target].ip; 
     } else {
         console.log("IP is not defined in target \""+target+"\"\n");
         return false;
     }
-    if (properties.targets[target].password){
+    if (properties.targets[target].password) {
        password = properties.targets[target].password;
     } 
     return true;
-    
+
+}
+
+function deployAll(keys) {
+    target = keys[0];
+
+    if (target) {
+        if (checkTarget()) {
+            var options = generateOptions();
+            if (program.uninstall) {
+                uninstall(
+                    function() {
+                        keys.shift();
+                        deployAll(keys);
+                });
+            } else {
+                execNativeDeploy(options,
+                    function() {
+                        deployAll(keys);
+                });
+            }
+        }
+    }
+}
+
+function uninstall(callback) {
+    var script = "/bin/blackberry-deploy",
+        nativeDeploy;
+
+    if (pkgrUtils.isWindows()) {
+        script += ".bat";
+    }
+
+    if (fs.existsSync(conf.DEPENDENCIES_TOOLS)) {
+        nativeDeploy = childProcess.exec(path.normalize(conf.DEPENDENCIES_TOOLS + script +" -listInstalledApps -device " +ip+ " -password " +password), {
+            "cwd": workingdir,
+            "env": process.env
+        }, function (error, stdout, stderr) {
+            var parser = new xml2js.Parser();
+            fs.readFile(path.join(__dirname + "/../../www/", "config.xml"), function(err, data) {
+                parser.parseString(data, function (err, result) {
+                    if (stdout.indexOf(result['@'].id) != -1) {
+                        var options = generateOptions(true);
+                        execNativeDeploy(options,
+                            function(){
+                                options = generateOptions(false);
+                                execNativeDeploy(options, callback);
+                        });
+                    } else {
+                        options = generateOptions(false);
+                        execNativeDeploy(options, callback);
+                    }
+                });
+            });
+        });
+    }
 }
 
 function exec(callback) {
     program
-        .usage('<target> [--no-launch] [--no-uninstall]')
+        .usage('command [<target>] [--no-launch] [--no-uninstall]')
         .option('--no-uninstall', 'does not uninstall app from device')
         .option('--no-launch', 'do not launch the app on device')
-        .parse(process.argv);
-
-     target = program.args[0] ? program.args[0] : properties.defaultTarget
-
-     if(target == "all"){
-        for (var key in properties.targets) {
-            if (properties.targets.hasOwnProperty(key)) {
-                target = key;
-                if(checkTarget()) {
-                    var options = generateOptions();
-                    execNativeDeploy(options, callback);
-                }
-            }
-        }
+
+    program
+        .command('all')
+        .usage('all [--no-launch] [--no-uninstall]')
+        .description('    Deploy the app on all targets')
+        .option('--no-uninstall', 'does not uninstall app from device')
+        .option('--no-launch', 'do not launch the app on device')
+    
+    program.parse(process.argv);
+    target = program.args[0] ? program.args[0] : properties.defaultTarget
+
+    if (target === "all") {
+        deployAll(Object.keys(properties.targets));
     } else {
         if (checkTarget()) {
-            var options = generateOptions();
-            execNativeDeploy(options, callback);
+            if (program.uninstall) {
+                uninstall(callback);
+            } else {
+                options = generateOptions(false);
+                execNativeDeploy(options, callback)
+            }
         }
     }
 }
 
-exec(null);
+exec(null);
\ No newline at end of file