Sweet, going to test this now as well.

On Thu, Jun 13, 2013 at 2:27 PM, Filip Maj <[email protected]> wrote:

> Alright guys, the lazy loading is merged into master2.
>
> I have tested on android, iOS and blackberry10. Also tested plugin
> integration, barcodescanner plugin was successfully installed on iOS and
> android and worked like a charm!
>
> I am pushing this up to npm as 2.8.16.
>
> On 6/12/13 7:58 AM, "Braden Shepherdson" <[email protected]> wrote:
>
> >It's either: a directory on the local disk, or a .tar.gz on the web
> >somewhere.
> >
> >This looks great, Fil!
> >
> >Braden
> >
> >
> >On Tue, Jun 11, 2013 at 9:30 PM, Michal Mocny <[email protected]>
> wrote:
> >
> >> That sounds awesome, sweet work Fil!
> >>
> >> Question: your cordova-android lib example has the uri
> >> "/Users/fil/src/cordova-android", but you mention supporting only
> >>.tar.gz
> >> -- does that mean that non-archived local directories are also
> >>supported?
> >>  (I should hope so).
> >>
> >> Thanks!
> >> -Michal
> >>
> >>
> >> On Tue, Jun 11, 2013 at 6:10 PM, Filip Maj <[email protected]> wrote:
> >>
> >> > Hey guys another quick update
> >> >
> >> > I have made progress on the hooks/events/middleware approach and opted
> >> for
> >> > a simpler, configuration approach. I think this approach satisfies
> >> > requirements for Adobe w.r.t. phonegap's CLI, as well as the wishes
> >> Michal
> >> > and Braden expressed for customizing the various libraries the cli
> >> > consumes.
> >> >
> >> > Once the git servers are back up, I'll push the latest code, but in
> >>the
> >> > meantime, here's how the "replace stock cordova libraries with your
> >>own"
> >> > functionality is coded atm - it's hooked into the lazy load
> >> functionality:
> >> >
> >> > 1. customize project/.cordova/config.json's "lib" object to point to
> >> > specific locations of libraries (see examples below for detail)
> >> >   - you can do so at a module-level as well by calling
> >> > `cordova.config({lib:{/* whatever */}});
> >> > 2. Then every time you go to add a platform, it checks if the
> >>appropriate
> >> > fields exist in the config.json, and if so, will lazy load the
> >>necessary
> >> > library before shelling out the library executable.
> >> > 3. This also works with the cordova hello world app. So if you call
> >> > cordova.config() with details about the location of your www assets
> >>and
> >> > whatnot before calling cordova.create(), it will use that info to lazy
> >> > load those assets first.
> >> >
> >> > ----
> >> >
> >> > Example 1: I want to use latest (master) of cordova-android from my
> >>local
> >> > filesystem
> >> >
> >> > You can do so via CLI or node-level module, here's the cli based
> >>example:
> >> > $ cordova create tmp
> >> > $ vim tmp/.cordova/config.json
> >> > * edit to add a path to the lib *
> >> > $ cat tmp/.cordova/config.json
> >> > {
> >> >     id:'io.cordova.hello',
> >> >     name:'HelloCordova',
> >> >     lib:{
> >> >         "android":{
> >> >             uri:"/Users/fil/src/cordova-android",
> >> >             version:"master"
> >> >             id:"cordova-master"
> >> >
> >> >         }
> >> >     }
> >> > }
> >> > $ cd tmp
> >> > $ cordova platform add android
> >> >
> >> > ^ that will shell out to /Users/fil/src/cordova-android/bin/create
> >> >
> >> > You can do the same with a library that is stored on the web
> >>somewhere.
> >> > Currently, it must be a .tar.gz but nothing stopping us from adding
> >>more
> >> > support compression-wise. For example, imagine we have some fork of
> >> > cordova-android that uses ChromeView instead.
> >> >
> >> > The above will also copy the local cordova-android directory into
> >> > ~/.cordova/lib/android/cordova-master/master/.
> >> >
> >> > ----
> >> >
> >> > Example 2: I want to use phonegap-start www app instead of the
> >> > cordova-app-hello-world
> >> >
> >> > Can only do so via node module right now (because the the www assets
> >>get
> >> > copied over when you call create), but here's how you would do it:
> >> >
> >> > $ node
> >> > > cordova=require('cordova');
> >> > > app_path = '/location/that/my/app/will/exist'
> >> > > cordova.config(app_path, {
> >> >     lib:{
> >> >         "www":{
> >> >
> >> > uri:"https://github.com/phonegap/phonegap-start/archive/2.5.0.tar.gz
> ",
> >> >             version:"2.5.0"
> >> >             id:"phonegap"
> >> >         }
> >> >     }});
> >> > > cordova.create(app_path);
> >> > Downloading
> >> > https://github.com/phonegap/phonegap-start/archive/2.5.0.tar.gz...
> >> >
> >> >
> >> > Similarly to the my first example, this one will create a
> >> > ~/.cordova/lib/www/phonegap/2.5.0 directory, with the contents of the
> >>tar
> >> > ball extracted into it.
> >> >
> >> > ====
> >> >
> >> > I still have a bunch of work to do with this, like revamping our tests
> >> > completely and adding new coverage for these features, but inching
> >> closer.
> >> >
> >> > On 6/7/13 2:46 PM, "Michael Brooks" <[email protected]> wrote:
> >> >
> >> > >1. Awesome
> >> > >
> >> > >2. Very similar logic exists in the phonegap-cli [1] [2]. Since this
> >> logic
> >> > >is being used by phonegap-cli, node-phonegap-build, and cordova-cli,
> >>we
> >> > >could extract it out to a new NPM module called cordova-config.
> >> > >
> >> > >3. Additionally, PhoneGap will want to load its own Hello World app
> >> > >instead
> >> > >of the Cordova Hello World app. So, it would be nice to accomodate
> >>this
> >> > >situation gracefully. Do Chrome Apps have any odd requirements?
> >> > >
> >> > >[1]
> >> > >
> >>
> >>
> https://github.com/mwbrooks/phonegap-cli/blob/master/lib/common/config.js
> >> > >[2]
> >> >
> >>>https://github.com/mwbrooks/phonegap-cli/tree/master/spec/common/config
> >> > >
> >> > >
> >> > >On Fri, Jun 7, 2013 at 2:38 PM, Filip Maj <[email protected]> wrote:
> >> > >
> >> > >> Cool, thanks Mike, I'll use the gitweb approach to download
> >>libraries.
> >> > >>
> >> > >> And re #2: fair enough, I'll add that bit of logic to the "find the
> >> root
> >> > >> of a cordova project" utility function.
> >> > >>
> >> > >> As for the hooks, I am still mulling over different approaches. One
> >> > >> scenario that us Adobe folk want to support for PhoneGap is
> >> redirecting
> >> > >> any adds/builds for particular platforms that are not supported on
> >>a
> >> > >> user's machine to PhoneGap Build. For example, if a user's machine
> >>was
> >> > >>not
> >> > >> setup for iOS development (say, a Windows machine), the PhoneGap
> >>CLI
> >> not
> >> > >> only needs to know when a particular event happens, but also needs
> >>to
> >> be
> >> > >> able to stop the Cordova CLI from proceeding with the event -
> >> something
> >> > >> akin to e.preventDefault() in DOM events.
> >> > >>
> >> > >> I'm not sure of any npm libraries out there that have a similar
> >> eventing
> >> > >> system in place but I will do some research and see if there is any
> >> > >>prior
> >> > >> art out there.
> >> > >>
> >> > >> If anyone on the list has any ideas, I'm all ears :)
> >> > >>
> >> > >> On 13-06-07 10:07 AM, "Michael Brooks" <[email protected]>
> >> > wrote:
> >> > >>
> >> > >> >1. The Apache GitWeb implementation allows us to download a
> >>tar.gz of
> >> > >>any
> >> > >> >hash or tag. Using this will allow us to download any platform
> >> release.
> >> > >> >Here is an example of how to download cordova-android 2.8.0 [1]. I
> >> > >>think
> >> > >> >this is better than downloading the entire release, because
> >> > >>lazy-loading
> >> > >> >is
> >> > >> >meant to only grab what's needed. It's also a better choice than
> >> > >>GitHub's
> >> > >> >downloads because Apache's mirroring is sometimes unreliable.
> >> > >> >
> >> > >> >2. We should use $HOME/.cordova/ There is no reason to invent
> >> > >> >yet-another-name for the Cordova configuration directory. When a
> >> > >> >".cordova/" is found the $HOME directory, it is considered a
> >>global
> >> > >> >configuration directory and not a Cordova project. We can use
> >> > >> >$HOME/.cordova/lib/cordova-android to store the lazy-loaded
> >> libraries.
> >> > >>I
> >> > >> >chose "lib/" instead of "platforms/" because we will also be
> >> > >>lazy-loading
> >> > >> >resources such as the Hello World app and someday perhaps even
> >> ios-sim.
> >> > >> >
> >> > >> >3. Sure, the hooks sound good.
> >> > >> >
> >> > >> >[1]
> >> > >> >
> >> > >>
> >> > >>
> >>
> https://git-wip-us.apache.org/repos/asf?p=cordova-android.git;a=snapshot
> >> > ;
> >> > >>h
> >> > >> >=2.8.0;sf=tgz
> >> > >> >
> >> > >> >
> >> > >> >On Fri, Jun 7, 2013 at 7:41 AM, Michal Mocny <[email protected]
> >
> >> > >>wrote:
> >> > >> >
> >> > >> >> Glad to see movement on this.
> >> > >> >>
> >> > >> >> Few suggestions:
> >> > >> >> - use $HOME/.cordova-config/libs  <-- this gives us a folder to
> >>put
> >> > >> >>other
> >> > >> >> stuff into later, without littering $HOME with .cordova-this and
> >> > >> >> .cordova-that
> >> > >> >> - I would love to have the ability to use different cordova-lib
> >> > >>versions
> >> > >> >> within any project easily.  Changing the before-hook or
> >>adjusting
> >> the
> >> > >> >>libs
> >> > >> >> folder sound like global operations.  Can we support --libs-dir=
> >> > >>command
> >> > >> >> line flag to cordova-cli?  This should only need to be
> >>specified on
> >> > >> >>create.
> >> > >> >>
> >> > >> >> -Michal
> >> > >> >>
> >> > >> >>
> >> > >> >> On Fri, Jun 7, 2013 at 10:07 AM, Braden Shepherdson <
> >> > >> [email protected]
> >> > >> >> >wrote:
> >> > >> >>
> >> > >> >> > The Apache Way of having source release bundles is important
> >>and
> >> we
> >> > >> >> follow
> >> > >> >> > it. But we can download content for CLI from wherever we
> >>please.
> >> > >>We're
> >> > >> >> > currently downloading the libs from npm, getting the code from
> >> npm
> >> > >>and
> >> > >> >> the
> >> > >> >> > libs from Github doesn't change much.
> >> > >> >> >
> >> > >> >> > This is $HOME, as in /Users/me or /home/me or
> >> > >>C:\Users\me\Application
> >> > >> >> Data
> >> > >> >> > or whatever it is on Windows? SGTM.
> >> > >> >> >
> >> > >> >> > The before hook should have the ability to substitute their
> >>own
> >> > >>copy
> >> > >> >>of
> >> > >> >> the
> >> > >> >> > libs from somewhere else, ideally a git URL/directory and
> >> revision.
> >> > >> >>This
> >> > >> >> > way it would be trivial to point CLI at master versions of
> >> > >>platforms.
> >> > >> >> >
> >> > >> >> > Braden
> >> > >> >> >
> >> > >> >> >
> >> > >> >> > On Fri, Jun 7, 2013 at 3:58 AM, Filip Maj <[email protected]>
> >>wrote:
> >> > >> >> >
> >> > >> >> > > One of the last key outstanding tasks for the CLI is lazy
> >> > >>loading of
> >> > >> >> > > platform libraries [1].
> >> > >> >> > >
> >> > >> >> > > I want to start tackling that tomorrow. I have a few
> >> > >> >>points/questions
> >> > >> >> to
> >> > >> >> > > bring up and wanted to share my vision of the
> >>implementation,
> >> > >>give
> >> > >> >> folks
> >> > >> >> > > an opportunity to comment.
> >> > >> >> > >
> >> > >> >> > > - where to download the source from?
> >> > >> >> Archive.apache.org/dist/cordovaseems
> >> > >> >> > > to have all of our releases, but each zip file contains ALL
> >> > >> >>platforms,
> >> > >> >> > not
> >> > >> >> > > individual ones. Github.com, on the other hand, DOES offer
> >> > >> >>per-platform
> >> > >> >> > > downloads, for e.g. [2].
> >> > >> >> > > - storing the location in HOME/.cordova-libs cool with
> >>people?
> >> I
> >> > >> >>want
> >> > >> >> to
> >> > >> >> > > avoid naming the folder .cordova since that is already used
> >>on
> >> a
> >> > >> >> > > per-project basis to identify the root of a
> >>cordova-cli-created
> >> > >> >>project
> >> > >> >> > (a
> >> > >> >> > > la git).
> >> > >> >> > > - I am thinking of exposing hooks/events for this
> >> > >> >> > (before_library_download
> >> > >> >> > > and after_library_download is my initial thought, which get
> >> > >>passed
> >> > >> >>in
> >> > >> >> > > platform and version as event parameters/data).
> >> > >> >> > >
> >> > >> >> > > Comments/suggestions welcome. Thanks!
> >> > >> >> > >
> >> > >> >> > > Fil
> >> > >> >> > >
> >> > >> >> > > [1] https://issues.apache.org/jira/browse/CB-3306
> >> > >> >> > > [2]
> >> https://github.com/apache/cordova-android/archive/2.8.0.zip
> >> > >> >> > >
> >> > >> >> > >
> >> > >> >> >
> >> > >> >>
> >> > >>
> >> > >>
> >> >
> >> >
> >>
>
>

Reply via email to