I've finished working on this for now and have marked the bug as fixed. The commits are all attached to https://issues.apache.org/jira/browse/CB-4910.
What I've done is: 1. config.xml: - defaults to the root instead of within www/. - We still read www/config.xml if the file doesn't exist at the root. - The template will put in at the root now though. 2. hooks/ now live in a directory in the root instead of within .cordova - The code will run all hooks found in .cordova/hooks as well as hooks/ - The create template now creates the directory in the root. - The create template no longer creates an empty directory for each hook type and instead adds a README.md to the hooks/ - Reason for this is that git doesn't commit empty dirs, so the empty subdirs are lost when committing to git anyways. 3. The .cordova/config.json: - Has not moved. - No longer contains the id and name used when creating the project (they weren't used anyways) - Will not be written if it doesn't contain anything (which is the default) - This means the .cordova/ directory now does not exist by default. 4. Updated the README.md to reflect the new project structure In terms of promoting the change, I think it'll be enough to mention the change in the next tools release blog post. On Mon, Jan 6, 2014 at 12:07 PM, Brian LeRoux <b...@brian.io> wrote: > ya agreed, we should aim to do something early Feb once everyone is back > into the the flow > > > On Mon, Jan 6, 2014 at 11:59 AM, Michal Mocny <mmo...@chromium.org> wrote: > >> If we don't add a config.json by default, we need a new strategy for >> looking up paths for the root. >> >> I don't like naming the top-level config "config.xml", but after some >> thoughts on it, I don't think we should rename it just right now. There >> are a lot of changes that would need to go along with that rename for it to >> make any sense. I also agree with Brian that what we really need is to >> step back and consider an entirely better solution rather than something >> incremental. Perhaps this is good subject matter for the next hangout / >> meet-up. >> >> -Michal >> >> >> On Fri, Jan 3, 2014 at 2:43 PM, Brian LeRoux <b...@brian.io> wrote: >> >> > probably a good idea for the moment / at some we will have a config file >> > reckoning! >> > >> > >> > On Fri, Jan 3, 2014 at 11:34 AM, Andrew Grieve <agri...@chromium.org> >> > wrote: >> > >> > > Okay, yeah, reading that back to myself and it seems like a bad idea >> > > (config.xml->app.xml). Probably would just add to confusion. >> > > >> > > So, top-level config.xml and top-level cordova.json. >> > > >> > > Maybe I could add to this that we don't create a cordova.json by >> default, >> > > since 99% most people shouldn't need it. >> > > >> > > >> > > On Fri, Jan 3, 2014 at 2:31 PM, Brian LeRoux <b...@brian.io> wrote: >> > > >> > > > actually, let me put this another way: I support .cordova/config.json >> > -> >> > > > cordova.json but I am not really interested in changing the name of >> > > > ./www/config.xml to ./www/app.xml >> > > > >> > > > ...feels to me we could consolidate this entire sitation with a >> single >> > > well >> > > > crafted configuration file (at the top level). ideally we have more >> > > > convention than configuration. feels like we have too many footguns >> to >> > > ease >> > > > our personal dev workflows as is than consideration for people >> actually >> > > > building apps. >> > > > >> > > > >> > > > On Fri, Jan 3, 2014 at 11:25 AM, Brian LeRoux <b...@brian.io> wrote: >> > > > >> > > > > Sorry, I completely do not understand this at all. The proposal is >> to >> > > > > change the name of config.xml to ease confusions and add a new top >> > > level >> > > > > config file? >> > > > > >> > > > > >> > > > > On Fri, Jan 3, 2014 at 11:15 AM, Andrew Grieve < >> agri...@chromium.org >> > > > >wrote: >> > > > > >> > > > >> Just spoke with Ian and I now understand his point about >> > cordova.json >> > > > >> being >> > > > >> for build environment, whereas config.xml is for application >> things. >> > > > >> >> > > > >> So, do think it'd be bad to have a cordova.json and a config.xml >> > right >> > > > >> next >> > > > >> to each other. >> > > > >> >> > > > >> How about: >> > > > >> >> > > > >> config.xml -> app.xml >> > > > >> - This will (hopefully) ease confusion about CLI's config.xml vs. >> > > > >> platforms/ config.xml files. >> > > > >> - E.g. we're adding icon & splashscreen support to CLI's >> > config.xml, >> > > > but >> > > > >> not for non-CLI config.xml files >> > > > >> - E.g. app.xml and plugin.xml is where you make edits, config.xml >> > is >> > > > >> what's read at runtime. >> > > > >> >> > > > >> .cordova/config.json -> cordova.json >> > > > >> >> > > > >> Also - JIRA for this is >> > https://issues.apache.org/jira/browse/CB-4910 >> > > > >> >> > > > >> >> > > > >> >> > > > >> >> > > > >> >> > > > >> On Thu, Jan 2, 2014 at 4:10 PM, Brian LeRoux <b...@brian.io> wrote: >> > > > >> >> > > > >> > I understood and read it too Gorkem. >> > > > >> > >> > > > >> > I was (poorly) suggesting we look at the issue of configuration >> > in a >> > > > >> > complete view. Due to backwards compatibility we will be adding >> a >> > > new >> > > > >> file >> > > > >> > and the code to support the old file will be around a while. >> > > > >> > >> > > > >> > We can probably roll a whole lot more into a single file. What >> I"m >> > > not >> > > > >> sure >> > > > >> > about is what should and should not be. >> > > > >> > >> > > > >> > >> > > > >> > On Thu, Jan 2, 2014 at 12:31 PM, Gorkem Ercan < >> > > gorkem.er...@gmail.com >> > > > >> > >wrote: >> > > > >> > >> > > > >> > > >> > > > >> > > Reducing the number of configuration files is actually the >> goal >> > > > here. >> > > > >> > > >> > > > >> > > The abstraction is not a new one. It already exists and it is >> > part >> > > > of >> > > > >> the >> > > > >> > > $PROJECT/.cordova/config.json. >> > > > >> > > I am suggesting to move it to $HOME/.cordova/config.json so >> that >> > > we >> > > > no >> > > > >> > > longer need the >> > > > >> > > $PROJECT/.cordova/config.json and have only the cordova.xml to >> > > carry >> > > > >> > > project specific >> > > > >> > > properties. >> > > > >> > > -- >> > > > >> > > Gorkem >> > > > >> > > >> > > > >> > > >> > > > >> > > On Thu, Jan 02, 2014 at 12:16:57PM -0800, Brian LeRoux wrote: >> > > > >> > > > Considering >> > http://wiki.apache.org/cordova/ConfigurationFilesI'm >> > > > >> not >> > > > >> > > sure >> > > > >> > > > we want more config either. >> > > > >> > > > >> > > > >> > > > Perhaps we need to think more comprehensively rather than >> > > > proposing >> > > > >> > more >> > > > >> > > > abstractions. >> > > > >> > > > >> > > > >> > > > >> > > > >> > > > On Thu, Jan 2, 2014 at 11:15 AM, Gorkem Ercan < >> > > > >> gorkem.er...@gmail.com >> > > > >> > > >wrote: >> > > > >> > > > >> > > > >> > > > > >> > > > >> > > > > I think what I will describe here is more that what CLI >> > > provides >> > > > >> > today. >> > > > >> > > > > >> > > > >> > > > > An engine/lib has a version, id and a uri. On most cases, >> > you >> > > > only >> > > > >> > care >> > > > >> > > > > about the >> > > > >> > > > > id and uri and assume that the tools that you work with >> > > already >> > > > >> knows >> > > > >> > > how >> > > > >> > > > > to >> > > > >> > > > > resolve the id and version to a location. In the case of >> CLI >> > > an >> > > > >> > engine >> > > > >> > > > > with id: cordova >> > > > >> > > > > and version:3.1.0 should be resolved to >> > > > >> > > ~/.cordova/lib/ios/cordova/3.1.0 . >> > > > >> > > > > If we have a >> > > > >> > > > > uri defined that actually means we want to overwrite the >> > > default >> > > > >> > > location >> > > > >> > > > > for the engine. >> > > > >> > > > > I think this redirection should be per engine not per >> > project >> > > > and >> > > > >> > > should >> > > > >> > > > > be located as part of >> > > > >> > > > > CLI's configuration >> > > > >> > > > > -- >> > > > >> > > > > Gorkem >> > > > >> > > > > >> > > > >> > > > > On Thu, Jan 02, 2014 at 01:28:12PM -0500, Andrew Grieve >> > wrote: >> > > > >> > > > > > Hmm, good point about absolute paths. >> > > > >> > > > > > >> > > > >> > > > > > I think if you're using an override there though, that >> you >> > > > could >> > > > >> > set >> > > > >> > > it >> > > > >> > > > > to >> > > > >> > > > > > a relative path for shared projects. Same thing with >> > plugin >> > > > >> search >> > > > >> > > paths. >> > > > >> > > > > > >> > > > >> > > > > > I think it'll be confusing to have a "cordova.xml" as >> well >> > > as >> > > > a >> > > > >> > > > > > "cordova.json" file right in the root. >> > > > >> > > > > > >> > > > >> > > > > > WDYT? Other options? >> > > > >> > > > > > >> > > > >> > > > > > >> > > > >> > > > > > On Thu, Jan 2, 2014 at 1:06 PM, Ian Clelland < >> > > > >> > iclell...@chromium.org >> > > > >> > > > >> > > > >> > > > > wrote: >> > > > >> > > > > > >> > > > >> > > > > > > On Thu, Jan 2, 2014 at 10:22 AM, Andrew Grieve < >> > > > >> > > agri...@chromium.org> >> > > > >> > > > > > > wrote: >> > > > >> > > > > > > >> > > > >> > > > > > > > What cordova.json has that config.xml doesn't, is >> that >> > > you >> > > > >> can >> > > > >> > > set >> > > > >> > > > > the >> > > > >> > > > > > > > location of platforms with it through: >> > > > >> > > > > > > > >> > > > >> > > > > > > > >> > > > >> > > > > > > >> > > > >> > > > > > > > >> > > > >> > > > > > > > That said, I like your idea of having one top-level >> > > config >> > > > >> file >> > > > >> > > > > instead >> > > > >> > > > > > > of >> > > > >> > > > > > > > two. I don't see why we couldn't just put these same >> > > > >> settings >> > > > >> > > into a >> > > > >> > > > > > > > "cordova.xml". >> > > > >> > > > > > > > >> > > > >> > > > > > > >> > > > >> > > > > > > Wouldn't this make it impossible to share project >> > > > >> configuration >> > > > >> > > between >> > > > >> > > > > > > developers? If your /Users/agrieve/.../ paths are in >> > your >> > > > >> config >> > > > >> > > xml, >> > > > >> > > > > > > you're going to have a bad time putting that in >> version >> > > > >> control. >> > > > >> > > > > > > >> > > > >> > > > > > > -1 on having a single file to manage both application >> > > config >> > > > >> and >> > > > >> > > > > > > build-environment config. >> > > > >> > > > > > > >> > > > >> > > > > > > +1 to the way I read Gorkem's original suggestion, >> which >> > > was >> > > > >> to >> > > > >> > > > > coordinate >> > > > >> > > > > > > the move of the two files into a single issue and take >> > > care >> > > > >> of it >> > > > >> > > all >> > > > >> > > > > at >> > > > >> > > > > > > once. >> > > > >> > > > > > > >> > > > >> > > > > > > >> > > > >> > > > > > > > >> > > > >> > > > > > > > >> > > > >> > > > > > > > On Wed, Jan 1, 2014 at 5:05 PM, Gorkem Ercan < >> > > > >> > > gorkem.er...@gmail.com >> > > > >> > > > > > >> > > > >> > > > > > > > wrote: >> > > > >> > > > > > > > >> > > > >> > > > > > > > > There is also another proposal to move config.xml >> > out >> > > of >> > > > >> www. >> > > > >> > > Can >> > > > >> > > > > we >> > > > >> > > > > > > > merge >> > > > >> > > > > > > > > this two moves and >> > > > >> > > > > > > > > 1. remove .cordova >> > > > >> > > > > > > > > 2. remove config.json >> > > > >> > > > > > > > > 3. move config.xml to root >> > > > >> > > > > > > > > 4. rename config.xml to cordova.xml >> > > > >> > > > > > > > > >> > > > >> > > > > > > > > AFAIK config,json does not carry any information >> > that >> > > is >> > > > >> not >> > > > >> > > > > already >> > > > >> > > > > > > > > available on the config.xml. Since .cordova is >> > > > basically a >> > > > >> > > marker >> > > > >> > > > > for >> > > > >> > > > > > > CLI >> > > > >> > > > > > > > > for the root of an app I think renaming config.xml >> > > > should >> > > > >> > > provide >> > > > >> > > > > the >> > > > >> > > > > > > > same >> > > > >> > > > > > > > > functionality. >> > > > >> > > > > > > > > -- >> > > > >> > > > > > > > > Gorkem >> > > > >> > > > > > > > > >> > > > >> > > > > > > > > >> > > > >> > > > > > > > >> > > > >> > > > > > > >> > > > >> > > > > >> > > > >> > > >> > > > >> > >> > > > >> >> > > > > >> > > > > >> > > > >> > > >> > >>