Return-Path: X-Original-To: apmail-incubator-callback-commits-archive@minotaur.apache.org Delivered-To: apmail-incubator-callback-commits-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 4CD84D450 for ; Mon, 27 Aug 2012 21:32:45 +0000 (UTC) Received: (qmail 23766 invoked by uid 500); 27 Aug 2012 21:32:45 -0000 Delivered-To: apmail-incubator-callback-commits-archive@incubator.apache.org Received: (qmail 23715 invoked by uid 500); 27 Aug 2012 21:32:45 -0000 Mailing-List: contact callback-commits-help@incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: callback-dev@incubator.apache.org Delivered-To: mailing list callback-commits@incubator.apache.org Received: (qmail 23696 invoked by uid 99); 27 Aug 2012 21:32:45 -0000 Received: from tyr.zones.apache.org (HELO tyr.zones.apache.org) (140.211.11.114) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 27 Aug 2012 21:32:45 +0000 Received: by tyr.zones.apache.org (Postfix, from userid 65534) id C1D4821470; Mon, 27 Aug 2012 21:32:44 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: filmaj@apache.org To: callback-commits@incubator.apache.org X-Mailer: ASF-Git Admin Mailer Subject: [1/7] git commit: using npm-published version of pluginstall. line drawn in sand regarding minimum cordova version. added asyncblock for flow control. fixed an issue with express deprecation warning. Message-Id: <20120827213244.C1D4821470@tyr.zones.apache.org> Date: Mon, 27 Aug 2012 21:32:44 +0000 (UTC) Updated Branches: refs/heads/cordova-client a963a21a3 -> e91530b03 using npm-published version of pluginstall. line drawn in sand regarding minimum cordova version. added asyncblock for flow control. fixed an issue with express deprecation warning. 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/e91530b0 Tree: http://git-wip-us.apache.org/repos/asf/incubator-cordova-labs/tree/e91530b0 Diff: http://git-wip-us.apache.org/repos/asf/incubator-cordova-labs/diff/e91530b0 Branch: refs/heads/cordova-client Commit: e91530b03524acf164d7ef5df9d9cea9a1e11a5b Parents: 7c802bb Author: Fil Maj Authored: Mon Aug 27 14:32:29 2012 -0700 Committer: Fil Maj Committed: Mon Aug 27 14:32:29 2012 -0700 ---------------------------------------------------------------------- README.md | 3 ++ package.json | 6 ++-- src/docs.js | 2 +- src/platform.js | 6 ---- src/plugin.js | 63 +++++++++++++++++++++++-------------------------- 5 files changed, 37 insertions(+), 43 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-cordova-labs/blob/e91530b0/README.md ---------------------------------------------------------------------- diff --git a/README.md b/README.md index c0c7324..c0be20e 100644 --- a/README.md +++ b/README.md @@ -20,6 +20,9 @@ cordova-client, you will need to install the SDK for that platform. See: Cordova client has been tested on Windows, Linux and Mas OS X. +In it's prototype stages, cordova-client will only work on Cordova v2.1 +and above. + # Getting Started You should (eventually) be able to `npm install cordova-client -g`. http://git-wip-us.apache.org/repos/asf/incubator-cordova-labs/blob/e91530b0/package.json ---------------------------------------------------------------------- diff --git a/package.json b/package.json index 6a376bc..e3bd783 100644 --- a/package.json +++ b/package.json @@ -23,9 +23,9 @@ "colors":">=0.6.0", "wrench":"1.3.9", "elementtree":"0.1.1", - "pluginstall":"git+https://github.com/filmaj/pluginstall.git", - "ncallbacks":"1.0.0", - "express":"3.0" + "pluginstall":"0.5.0", + "express":"3.0", + "asyncblock":"2.1.4" }, "devDependencies": { "jasmine-node":">=1.0.0" http://git-wip-us.apache.org/repos/asf/incubator-cordova-labs/blob/e91530b0/src/docs.js ---------------------------------------------------------------------- diff --git a/src/docs.js b/src/docs.js index ba8bde0..db734af 100644 --- a/src/docs.js +++ b/src/docs.js @@ -3,7 +3,7 @@ var express = require('express'), colors = require('colors'), port = 2222, statik = path.join(__dirname, '..', 'doc'), - server = express.createServer(); + server = express(); module.exports = function docs () { server.configure(function() { http://git-wip-us.apache.org/repos/asf/incubator-cordova-labs/blob/e91530b0/src/platform.js ---------------------------------------------------------------------- diff --git a/src/platform.js b/src/platform.js index 407f582..5c4bf63 100644 --- a/src/platform.js +++ b/src/platform.js @@ -65,12 +65,6 @@ module.exports = function platform(command, target, callback) { var outPath = path.join(__dirname, '..', 'lib', target); var cmd = util.format('git clone %s %s', repos[target], outPath); - // TODO: refactor post-clone hooks - // make sure we run "make install" if we're cloning ios - if (target == 'ios') { - cmd += ' && cd "' + output + '" && make install'; - } - console.log('Cloning ' + repos[target] + ', this may take a while...'); exec(cmd, function(err, stderr, stdout) { if (err) { http://git-wip-us.apache.org/repos/asf/incubator-cordova-labs/blob/e91530b0/src/plugin.js ---------------------------------------------------------------------- diff --git a/src/plugin.js b/src/plugin.js index afba9f5..46da082 100644 --- a/src/plugin.js +++ b/src/plugin.js @@ -4,9 +4,9 @@ var cordova_util = require('./util'), cpr = wrench.copyDirSyncRecursive, fs = require('fs'), path = require('path'), - nCalls = require('ncallbacks'), config_parser = require('./config_parser'), exec = require('child_process').exec, + asyncblock = require('asyncblock'), ls = fs.readdirSync; module.exports = function plugin(command, target, callback) { @@ -53,42 +53,39 @@ module.exports = function plugin(command, target, callback) { var pluginWww = path.join(target, 'www'); var wwwContents = ls(pluginWww); - - var n = wwwContents.length + platforms.length; - var end = nCalls(n, callback || function(){}); - - // Iterate over all platforms in the project and install the - // plugin. var cli = path.join(__dirname, '..', 'node_modules', 'pluginstall', 'cli.js'); - platforms.forEach(function(platform) { - var cmd = util.format('%s %s "%s" "%s"', cli, platform, path.join(projectRoot, 'platforms', platform), target); - console.log('executing ' + cmd); - exec(cmd, function(err, stderr, stdout) { - end(); - if (err) { - console.error(stderr); - // TODO: remove plugin. requires pluginstall to - // support removal. - throw 'An error occured during plugin installation. ' + err; + + asyncblock(function(flow) { + // Iterate over all platforms in the project and install the + // plugin. + platforms.forEach(function(platform) { + var cmd = util.format('%s %s "%s" "%s"', cli, platform, path.join(projectRoot, 'platforms', platform), target); + console.log('executing ' + cmd); + var key = 'pluginstall-' + platform; + exec(cmd, flow.set({ + key:key, + firstArgIsError:false, + responseFormat:['err', 'stdout', 'stderr'] + })); + var buffers = flow.get(key); + if (buffers.err) throw 'An error occured during plugin installation for ' + platform + '. ' + buffers.err; + }); + + // Add the plugin web assets to the www folder as well + // TODO: assumption that web assets go under www folder + // inside plugin dir; instead should read plugin.xml + wwwContents.forEach(function(asset) { + asset = path.resolve(path.join(pluginWww, asset)); + var info = fs.lstatSync(asset); + var name = asset.substr(asset.lastIndexOf('/')+1); + var wwwPath = path.join(projectWww, name); + if (info.isDirectory()) { + cpr(asset, wwwPath); + } else { + fs.writeFileSync(wwwPath, fs.readFileSync(asset)); } }); }); - - // Add the plugin web assets to the www folder as well - // TODO: assumption that web assets go under www folder - // inside plugin dir; instead should read plugin.xml - wwwContents.forEach(function(asset) { - asset = path.resolve(path.join(pluginWww, asset)); - var info = fs.lstatSync(asset); - var name = asset.substr(asset.lastIndexOf('/')+1); - var wwwPath = path.join(projectWww, name); - if (info.isDirectory()) { - cpr(asset, wwwPath); - } else { - fs.writeFileSync(wwwPath, fs.readFileSync(asset)); - } - end(); - }); break; case 'remove':