cordova-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Braden Shepherdson <bra...@chromium.org>
Subject Re: Major refactoring of Plugman and CLI
Date Mon, 23 Sep 2013 18:13:38 GMT
Whoops, I forgot to mention, I created and pushed a cordova-3.1.x branch of
both tools before merging this; fixes for the 3.1.0 release should be in
there. I don't intend to launch the refactored code to NPM until we've had
at least a week of trying it out.

Braden


On Mon, Sep 23, 2013 at 2:08 PM, Braden Shepherdson <braden@chromium.org>wrote:

> tl;dr: Plugman and CLI now uses Q.js[1] Promises internally instead of
> callbacks. This has significantly clarified and shortened the code. The
> public API (plugman.fetch, cordova.platform, etc.) HAVE NOT changed!
>
> If you use CLI on the command line, nothing has changed.
>
> If you downstream CLI and/or Plugman, but use cordova.foo and plugman.foo,
> nothing has changed (except possibly that a few calls are a bit more async
> than before, so code that cheats and pretends they're sync might fail now).
>
> If you downstream either one, but require internal modules like fetch.js
> or platform.js directly, you should stop doing that and use plugman.fetch
> etc. instead. If you want to continue calling them directly, you'll need to
> port to use promises.
>
> If you've been working on Plugman or CLI and I just broke everything, feel
> free to yell at me on IRC (#cordova, shepheb) or Gtalk (braden at google
> dot com) or email. It's not hard to port things to handle promises (see
> below), and their basic use is not hard to understand (see the tutorial[1]).
>
> If you really do need to port something, and you used to do a function
> call like this:
>
> whateverFunc(args..., function(err){
>   if (err) {
>     foo
>   } else {
>     bar
>   }
> });
>
> the correct call is now:
>
> whateverFunc(args...).done(function() {
>   bar
> }, function(err) {
>   foo
> });
>
>
> [1] Q.js tutorial at https://github.com/kriskowal/q
>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message