You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by bh...@apache.org on 2013/09/13 14:53:18 UTC

[1/2] webworks commit: [CB-4732] Re-writing build script to use async

Updated Branches:
  refs/heads/master 4baa51563 -> 1f955e96e


[CB-4732] Re-writing build script to use async

Added --query flag to request keystorepass

Reviewed by Bryan Higgins <bh...@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/42ed4bf8
Tree: http://git-wip-us.apache.org/repos/asf/cordova-blackberry/tree/42ed4bf8
Diff: http://git-wip-us.apache.org/repos/asf/cordova-blackberry/diff/42ed4bf8

Branch: refs/heads/master
Commit: 42ed4bf892b306131417dc8e425b37a8cc9ef8ca
Parents: 4baa515
Author: Jeffrey Heifetz <jh...@blackberry.com>
Authored: Mon Sep 9 16:11:03 2013 -0400
Committer: Bryan Higgins <bh...@blackberry.com>
Committed: Fri Sep 13 08:56:00 2013 -0400

----------------------------------------------------------------------
 .../bin/templates/project/cordova/lib/build     | 151 +++++++++----------
 1 file changed, 74 insertions(+), 77 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/42ed4bf8/blackberry10/bin/templates/project/cordova/lib/build
----------------------------------------------------------------------
diff --git a/blackberry10/bin/templates/project/cordova/lib/build b/blackberry10/bin/templates/project/cordova/lib/build
index 8b54709..d1d4af5 100755
--- a/blackberry10/bin/templates/project/cordova/lib/build
+++ b/blackberry10/bin/templates/project/cordova/lib/build
@@ -27,8 +27,9 @@ var path = require("path"),
         "-o",
         path.resolve(path.join(__dirname, "..", "..", "build"))
     ],
-    jWorkflow = require("jWorkflow"),
+    async = require("async"),
     childProcess = require("child_process"),
+    logger = require("./logger"),
     pkgrUtils = require("./packager-utils"),
     commandStr;
 
@@ -39,79 +40,11 @@ function copyArgIfExists(arg) {
     }
 }
 
-function doReleaseBuild() {
-    //Note: Packager refers to signing password as "password" not "keystorepass"
-    if (command["keystorepass"]) {
-        bbwpArgv.push("--password");
-        bbwpArgv.push(command["keystorepass"]);
-    } else if (bbProperties.keystorepass) {
-        bbwpArgv.push("--password");
-        bbwpArgv.push(bbProperties.keystorepass);
-    } else {
-        console.log("No signing password provided. Please enter a value for 'keystorepass' in %HOME%/.cordova/blackberry10.json or use --keystorepass via command-line directly from the project cordova scripts (WILL NOT WORK FROM CLI).");
-        console.log(command.helpInformation());
-        process.exit(2);
-    }
-
-    copyArgIfExists("buildId");
-
-    build();
-}
-
-function build() {
-    //enable webinspector in debug mode or if --webinspector was provided
-    if (!command.release || command.webInspector) {
-        bbwpArgv.push("-d");
-    }
-
-    copyArgIfExists("params");
-    copyArgIfExists("loglevel");
-
-    //Overwrite process.argv, before calling packager
-    process.argv = bbwpArgv;
-
-    //Delete cached commander object. It will conflict with the packagers commander
-    delete require.cache[require.resolve("commander")];
-    delete require.cache[require.resolve("commander/lib/commander")];
-
-    require("./packager").start(function() {});
-}
-
-function postClean() {
-    if (command.release) {
-        doReleaseBuild();
-    } else {
-        build();
-    }
-}
-
-function clean(previous, baton) {
-    var cleanScript,
-        execName = "./clean";
-
-    if (pkgrUtils.isWindows()) {
-        execName = "clean";
-    }
-
-    baton.take();
-
-    cleanScript = childProcess.exec(execName, {
-        "cwd": path.normalize(__dirname + "/.."),
-        "env": process.env
-    });
-
-    cleanScript.stdout.on("data", pkgrUtils.handleProcessOutput);
-    cleanScript.stderr.on("data", pkgrUtils.handleProcessOutput);
-
-    cleanScript.on("exit", function (code) {
-        baton.pass();
-    });
-}
-
 command
-    .usage('[--debug] [--release] [-k | --keystorepass] [-b | --buildId <number>] [-p | --params <json>] [-ll | --loglevel <level>]')
+    .usage('[--debug] [--release] [--query] [-k | --keystorepass] [-b | --buildId <number>] [-p | --params <json>] [-ll | --loglevel <level>]')
     .option('--debug', 'build in debug mode.')
     .option('--release', 'build in release mode. This will sign the resulting bar.')
+    .option('--query', 'query on the commandline when a password is needed')
     .option('-k, --keystorepass <password>', 'signing key password')
     .option('-b, --buildId <num>', 'specifies the build number for signing (typically incremented from previous signing).')
     .option('-d, --web-inspector', 'enables webinspector. Enabled by default in debug mode.).')
@@ -122,17 +55,81 @@ try {
     command.parse(process.argv);
 
     if (command.debug && command.release) {
-        console.log("Invalid build command: cannot specify both debug and release parameters.");
+        logger.warn("Invalid build command: cannot specify both debug and release parameters.");
         console.log(command.helpInformation());
         process.exit(2);
     }
 
-    // Implicitly call clean first
-    jWorkflow.order(clean)
-             .andThen(postClean)
-             .start();
+    async.series(
+        [
+            function clean (done) {
+                var cmd = utils.isWindows() ? "clean" : "./clean",
+                    args = [],
+                    opts = { "cwd": path.normalize(__dirname + "/..") };
+
+                utils.exec(cmd, args, opts, done);
+            },
+            function releaseBuild (allDone) {
+                var childTasks = [],
+                    err;
+
+                if (command.release) {
+                    copyArgIfExists("buildId");
+                    //Note: Packager refers to signing password as "password" not "keystorepass"
+                    bbwpArgv.push("--password");
+                    if (command.keystorepass) {
+                        bbwpArgv.push(command.keystorepass);
+                    } else if (bbProperties.keystorepass) {
+                        bbwpArgv.push(bbProperties.keystorepass);
+                    } else if (command.query) {
+                        childTasks.push(utils.prompt.bind(this, {description: "Please enter your keystore password: ", hidden: true}));
+                        childTasks.push(function (password, done) {
+                            bbwpArgv.push(password);
+                            done();
+                        });
+                    } else {
+                        err = "No signing password provided. Please enter a value for 'keystorepass' in %HOME%/.cordova/blackberry10.json or use --keystorepass via command-line";
+                    }
+                }
+
+                async.waterfall(childTasks, function (error) { allDone(error || err);});
+            },
+            function build (done) {
+                //enable weybinspector in debug mode or if --webinspector was provided
+                if (!command.release || command.webInspector) {
+                    bbwpArgv.push("-d");
+                }
+
+                copyArgIfExists("params");
+                copyArgIfExists("loglevel");
+
+                //Overwrite process.argv, before calling packager
+                process.argv = bbwpArgv;
+
+                //Delete cached commander object. It will conflict with the packagers commander
+                delete require.cache[require.resolve("commander")];
+                delete require.cache[require.resolve("commander/lib/commander")];
+
+                require("./packager").start(done);
+            }
+        ],
+        function (err, results) {
+            if (err) {
+                if (typeof err === "string") {
+                    logger.error(err);
+                    process.exit(1);
+                } else if (typeof err === "number") {
+                    process.exit(err);
+                } else {
+                    process.exit(2);
+                }
+            } else {
+                process.exit(0);
+            }
+        }
+    );
 } catch (e) {
-    console.log(e);
+    logger.error(e);
     process.exit(2);
 }
 


[2/2] webworks commit: [CB-4732] Removing buildId validation as it is no longer necessary

Posted by bh...@apache.org.
[CB-4732] Removing buildId validation as it is no longer necessary

Reviewed by Bryan Higgins <bh...@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/1f955e96
Tree: http://git-wip-us.apache.org/repos/asf/cordova-blackberry/tree/1f955e96
Diff: http://git-wip-us.apache.org/repos/asf/cordova-blackberry/diff/1f955e96

Branch: refs/heads/master
Commit: 1f955e96eae243782086ac5f5b1154b5f4cbc3e1
Parents: 42ed4bf
Author: Jeffrey Heifetz <jh...@blackberry.com>
Authored: Mon Sep 9 16:20:12 2013 -0400
Committer: Bryan Higgins <bh...@blackberry.com>
Committed: Fri Sep 13 08:56:09 2013 -0400

----------------------------------------------------------------------
 .../templates/project/cordova/lib/bar-builder.js    |  5 +++--
 .../bin/templates/project/cordova/lib/localize.js   |  3 ---
 .../project/cordova/lib/native-packager.js          |  2 +-
 .../templates/project/cordova/lib/packager-utils.js | 10 ++++++----
 .../project/cordova/lib/packager-validator.js       |  5 -----
 .../bin/templates/project/cordova/lib/packager.js   | 14 ++++++++++----
 .../bin/templates/project/cordova/lib/session.js    |  4 ++--
 .../cordova/unit/spec/lib/packager-validator.js     | 16 ----------------
 8 files changed, 22 insertions(+), 37 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/1f955e96/blackberry10/bin/templates/project/cordova/lib/bar-builder.js
----------------------------------------------------------------------
diff --git a/blackberry10/bin/templates/project/cordova/lib/bar-builder.js b/blackberry10/bin/templates/project/cordova/lib/bar-builder.js
index 992804c..cfd029a 100644
--- a/blackberry10/bin/templates/project/cordova/lib/bar-builder.js
+++ b/blackberry10/bin/templates/project/cordova/lib/bar-builder.js
@@ -53,11 +53,12 @@ function buildTarget(previous, baton) {
             baton.pass(code);
         } else {
             if (target === "device" && session.isSigningRequired(config)) {
-                signingHelper.execSigner(session, target, function (error, stdout, stderr) {
+                signingHelper.execSigner(session, target, function (error) {
                     if (error && error.code) {
                         baton.pass(error.code);
                     } else {
-                        baton.pass();
+                        //Pass 0 to signify success
+                        baton.pass(0);
                     }
                 });
             } else {

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/1f955e96/blackberry10/bin/templates/project/cordova/lib/localize.js
----------------------------------------------------------------------
diff --git a/blackberry10/bin/templates/project/cordova/lib/localize.js b/blackberry10/bin/templates/project/cordova/lib/localize.js
index df260f8..94d4673 100755
--- a/blackberry10/bin/templates/project/cordova/lib/localize.js
+++ b/blackberry10/bin/templates/project/cordova/lib/localize.js
@@ -34,9 +34,6 @@ var Localize = require("localize"),
         "WARNING_SIGNING_PASSWORD_EXPECTED": {
             "en": "Build ID set in config.xml [version], but no signing password was provided [-g]. Bar will be unsigned"
         },
-        "EXCEPTION_MISSING_SIGNING_BUILDID": {
-            "en": "Cannot sign application - No buildId provided [--buildId]"
-        },
         "EXCEPTION_DEBUG_TOKEN_NOT_FOUND": {
             "en": "Failed to find debug token. If you have an existing debug token, please copy it to %HOME%/.cordova/blackberry10debugtoken.bar. To generate a new debug token, execute the 'run' command."
         },

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/1f955e96/blackberry10/bin/templates/project/cordova/lib/native-packager.js
----------------------------------------------------------------------
diff --git a/blackberry10/bin/templates/project/cordova/lib/native-packager.js b/blackberry10/bin/templates/project/cordova/lib/native-packager.js
index 98346b4..a29b86a 100644
--- a/blackberry10/bin/templates/project/cordova/lib/native-packager.js
+++ b/blackberry10/bin/templates/project/cordova/lib/native-packager.js
@@ -206,7 +206,7 @@ function generateOptionsFile(session, target, config) {
         }
     }
 
-    if (target === "device" && isSigning) {
+    if (target === "device" && isSigning && config.buildId) {
         optionsStr += "-buildId" + NL;
         optionsStr += config.buildId + NL;
     } else if (session.debug) {

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/1f955e96/blackberry10/bin/templates/project/cordova/lib/packager-utils.js
----------------------------------------------------------------------
diff --git a/blackberry10/bin/templates/project/cordova/lib/packager-utils.js b/blackberry10/bin/templates/project/cordova/lib/packager-utils.js
index 8bc3acf..9101df6 100644
--- a/blackberry10/bin/templates/project/cordova/lib/packager-utils.js
+++ b/blackberry10/bin/templates/project/cordova/lib/packager-utils.js
@@ -162,10 +162,12 @@ _self = {
         var msg = data.toString().replace(/[\n\r]/g, '');
 
         if (msg) {
-            if (msg.toLowerCase().indexOf("error:") >= 0) {
-                logger.error(msg);
-            } else if (msg.toLowerCase().indexOf("warn") >= 0) {
-                logger.warn(msg);
+            if (msg.toLowerCase().indexOf("error: ") >= 0) {
+                logger.error(msg.substring(7));
+            } else if (msg.toLowerCase().indexOf("warn: ") >= 0) {
+                logger.warn(msg.substring(6));
+            } else if (msg.toLowerCase().indexOf("info: ") >= 0) {
+                logger.info(msg.substring(6));
             } else {
                 logger.info(msg);
             }

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/1f955e96/blackberry10/bin/templates/project/cordova/lib/packager-validator.js
----------------------------------------------------------------------
diff --git a/blackberry10/bin/templates/project/cordova/lib/packager-validator.js b/blackberry10/bin/templates/project/cordova/lib/packager-validator.js
index d85c0db..9fc7627 100644
--- a/blackberry10/bin/templates/project/cordova/lib/packager-validator.js
+++ b/blackberry10/bin/templates/project/cordova/lib/packager-validator.js
@@ -73,11 +73,6 @@ _self = {
             }
         }
 
-        //if -g was provided with NO build id, throw error
-        if (keysPassword && !buildId) {
-            throw localize.translate("EXCEPTION_MISSING_SIGNING_BUILDID");
-        }
-
         if (commandLinebuildId && !keysPassword) {
             //if --buildId was provided with NO password, throw error
             throw localize.translate("EXCEPTION_MISSING_SIGNING_PASSWORD");

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/1f955e96/blackberry10/bin/templates/project/cordova/lib/packager.js
----------------------------------------------------------------------
diff --git a/blackberry10/bin/templates/project/cordova/lib/packager.js b/blackberry10/bin/templates/project/cordova/lib/packager.js
index 01541ac..1591a0c 100644
--- a/blackberry10/bin/templates/project/cordova/lib/packager.js
+++ b/blackberry10/bin/templates/project/cordova/lib/packager.js
@@ -56,18 +56,24 @@ module.exports = {
 
                     if (code === 0) {
                         logger.log(localize.translate("PROGRESS_COMPLETE"));
+                    }
 
-                        //call packager callback
-                        callback();
+                    if (callback && typeof callback === "function") {
+                        callback(code);
                     }
                 });
             });
         } catch (e) {
             try {
                 fileManager.cleanSource(session);
-            } catch (ex) {}
+            } catch (ex) {
+            } finally {
+                logger.error(e);
+                if (callback && typeof callback === "function") {
+                    callback(e);
+                }
+            }
 
-            logger.error(e);
         }
     }
 };

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/1f955e96/blackberry10/bin/templates/project/cordova/lib/session.js
----------------------------------------------------------------------
diff --git a/blackberry10/bin/templates/project/cordova/lib/session.js b/blackberry10/bin/templates/project/cordova/lib/session.js
index 048d9c3..d96c57d 100644
--- a/blackberry10/bin/templates/project/cordova/lib/session.js
+++ b/blackberry10/bin/templates/project/cordova/lib/session.js
@@ -56,7 +56,7 @@ module.exports = {
             outputDir = cmdline.output,
             properties = require("../../project.json"),
             archivePath = path.resolve(cmdline.args[0] ? cmdline.args[0] : "../../www"),
-            archiveName = utils.genBarName(), 
+            archiveName = utils.genBarName(),
             appdesc,
             buildId = cmdline.buildId;
 
@@ -113,7 +113,7 @@ module.exports = {
                 return getParams(cmdline, toolName);
             },
             isSigningRequired: function (config) {
-                return signingHelper.getKeyStorePath() && signingPassword && config.buildId;
+                return signingHelper.getKeyStorePath() && signingPassword;
             },
             "targets": ["simulator", "device"]
         };

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/1f955e96/blackberry10/bin/test/cordova/unit/spec/lib/packager-validator.js
----------------------------------------------------------------------
diff --git a/blackberry10/bin/test/cordova/unit/spec/lib/packager-validator.js b/blackberry10/bin/test/cordova/unit/spec/lib/packager-validator.js
index f0d7e40..4491b40 100644
--- a/blackberry10/bin/test/cordova/unit/spec/lib/packager-validator.js
+++ b/blackberry10/bin/test/cordova/unit/spec/lib/packager-validator.js
@@ -166,22 +166,6 @@ describe("Packager Validator", function () {
         }).toThrow(localize.translate("EXCEPTION_APPDESC_NOT_FOUND", "c:/bardescriptor.xml"));
     });
 
-    it("throws an exception when a password [-g] was set with no buildId", function () {
-        var session = testUtilities.cloneObj(testData.session),
-            configObj = testUtilities.cloneObj(testData.config);
-
-        //setup signing parameters
-        session.keystore = "c:/author.p12";
-        session.keystoreCsk = "c:/barsigner.csk";
-        session.keystoreDb = "c:/barsigner.db";
-        session.storepass = "myPassword";
-        configObj.buildId = undefined;
-
-        expect(function () {
-            packagerValidator.validateSession(session, configObj);
-        }).toThrow(localize.translate("EXCEPTION_MISSING_SIGNING_BUILDID"));
-    });
-
     it("throws an exception when --buildId was set with no password [-g]", function () {
         var session = testUtilities.cloneObj(testData.session),
             configObj = testUtilities.cloneObj(testData.config);