Prepare runs hooks, updates the platform config.xml's (using platform defaults + plugin.xml's + app config.xml), and updates the www/ assets, including re-adding plugin js-modules.
In practice this takes about as long as copying all the files around. However, pre/post prepare hooks are the most common place for application developers to inject more complex conditional actions. Chrome Apps for Mobile, for example, will automatically install platforms / plugins if they aren't already installed as part of pre-prepare. Anyway, its starting to sound like we wont actually need to change the cli interface to address your needs: IDE's can just edit the config.xml directly to insert dependant platforms/plugins (with gorkems work) without actually adding those asserts locally if that isn't important (i.e. for remote cloud build). If you are working at the command line, I don't see much value in supporting "add" without actually fetching the assets. Really we just need to iron out and land what Gorkem started. Does that sound fair? -Michal On Mon, Nov 3, 2014 at 1:45 PM, Treggiari, Leo <[email protected]> wrote: > I hate to see lots of new commands and/or options added. They are OK if > code is calling the commands (e.g. an IDE), but not so good for users. > > Certainly having a well-defined and documented place for the metadata re: > plugins and platforms is an important step forward. > > How smart is "prepare"? Does it work incrementally based upon the changes > since the last time it was invoked, or is does it do all preparation every > time? I ask from a performance perspective with respect to moving work > from "add" to "prepare", because it seems like "prepare" is called much > more often than "add". > > Regarding fetching the sources and local vs. remote builds, It's not just > where the build takes place that determines whether a client wants the > sources. The sources can be used for other things besides building, > including code-assist in an editor, emulation, companion apps, etc. > > Leo > > -----Original Message----- > From: [email protected] [mailto:[email protected]] On Behalf Of Michal > Mocny > Sent: Monday, November 03, 2014 10:25 AM > To: dev > Cc: Treggiari, Leo > Subject: Re: cordova xxx add - is there a problem? > > I'm not sure that we should change the "cordova plugin/platform add" cli > command to not actually make the changes to platforms/ or plugins/, but > since both commands run "cordova prepare", we could move the logic to the > prepare step and then add a "--skip-prepare" or "--save-only" type flag for > the add commands? > > Alternatively, we could do something like what phonegap-cli does and have a > "cordova remote plugin add" to differentiate local installs from mere > metadata updates. > > Either way, seems this is related to Gorkems work to add platform / plugin > deps to config.xml (though, the current implementation as it exists is > insufficient). > > -Michal > > On Fri, Oct 31, 2014 at 1:48 PM, Frederico Galvão < > [email protected]> wrote: > > > Well, afaik 'cordova plugin add <>' only does 'cordova prepare' after the > > plugin stuff is done, and 'cordova prepare' works even without native > SDKs. > > > > 2014-10-30 23:43 GMT-02:00 Andrew Grieve <[email protected]>: > > > > > There've been some changes to CLI in the last month that fix Android > > > requiring an SDK to run create & plugin add. Likewise, a fix just went > in > > > this week (last week?) that fixes the slash problem for xcode project > > files > > > on windows. > > > > > > That said, I like your idea of not modifying platforms/ outside of > > prepare > > > / build. > > > > > > On Thu, Oct 30, 2014 at 10:48 AM, Treggiari, Leo < > > [email protected]> > > > wrote: > > > > > > > Is there an issue with the semantics of "plugin add" and "platform > > add"? > > > > > > > > This is just a high level query to see if this is something worth > > > > discussing in more detail. I don't know exactly what each Cordova > CLI > > > > command does. My knowledge is based upon reading documentation > (which > > is > > > > sometimes wrong as noted in recent e-mails) and experimentation. > > > > > > > > What does "add" do? > > > > > > > > > > > > 1. For "plugin add" fetches the plugin sources. For "platform > > add" > > > > fetches the platform implementation if necessary. > > > > > > > > 2. Stores some metadata somewhere indicating that the plugin or > > > > platform was added? What and where this metadata is stored should be > > > > better documented. > > > > > > > > 3. For "plugin add", processes plugin variables, if specified, > > which > > > > modifies the plugin sources. > > > > > > > > 4. Creates/modifies the native platform "project" (e.g. a Visual > > > > Studio, Eclipse, or Xcode, etc. project) to make the appropriate > > changes. > > > > > > > > If "plugin add" or "platform add" do more than this, I'd appreciate > > > being > > > > educated. > > > > > > > > My question is, should "add" stop at step #2 and leave the rest to > the > > > > prepare step? > > > > > > > > Here's why: > > > > > > > > * We see there is an issue with multiple developers on the > same > > > > project on different platforms. E.g. when one developer is on > Windows > > > > working on the Windows and Android versions of the project and > another > > is > > > > on Mac working on the iOS version of the project. If the shared > > project > > > > wants to add all three platforms (which it does...) then Cordova CLI > > has > > > > problems. Basically because not much else than the "create" command > > > works > > > > without having native SDKs installed. Would many issues be solved if > > the > > > > "add" command did not require the presence of native SDKs, but rather > > > > "prepare" did? > > > > > > > > * There seems to be an issue with the co-existence of Cordova > > CLI > > > > and IDEs, and in particular with IDEs that want to build in the cloud > > > > without the requirement of native SDKs. It would be ideal if > multiple > > > > users on the same project could use different tools - e.g. one use > the > > > > command line and one use the IDE. The basic "definition" of a > Cordova > > > CLI > > > > project, i.e. the part that needs to be shared, is the list of > > platforms > > > > and plugins and the settings in the top level config.xml. If the > basic > > > > definition of the project could be created/edited from both the CLI > and > > > > various IDEs, then the rest of the development workflow (prepare, > > build, > > > > emulate, etc.) could be implemented in different ways, but the > project > > > > definition could still be shared. > > > > > > > > P.S. the "remove" command has similar semantics. > > > > > > > > Thanks, > > > > Leo > > > > > > > > > > > > > > > -- > > > > *Frederico Galvão* > > > > Diretor de Tecnologia > > > > PontoGet Inovação Web > > > > > > ( +55(62) 8131-5720 > > > > * www.pontoget.com.br <http://www.pontoget.com/> > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [email protected] > For additional commands, e-mail: [email protected] >
