cordova-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From mwbro...@apache.org
Subject [5/5] git commit: Revert merge branch 'future' into 'master'
Date Mon, 13 May 2013 18:31:28 GMT
Revert merge branch 'future' into 'master'

Reference JIRA CB-3288

This reverts commit 51901bd9f22127ca283df5fa4e06611cbb59359b, reversing
changes made to 72cca5ec4f203dc18802b99f672f67b71817280d.


Project: http://git-wip-us.apache.org/repos/asf/cordova-cli/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-cli/commit/22937060
Tree: http://git-wip-us.apache.org/repos/asf/cordova-cli/tree/22937060
Diff: http://git-wip-us.apache.org/repos/asf/cordova-cli/diff/22937060

Branch: refs/heads/master
Commit: 22937060db1baafe1333b7312ed58491021ea445
Parents: 51901bd
Author: Michael Brooks <michael@michaelbrooks.ca>
Authored: Mon May 13 11:22:59 2013 -0700
Committer: Michael Brooks <michael@michaelbrooks.ca>
Committed: Mon May 13 11:22:59 2013 -0700

----------------------------------------------------------------------
 README.md                                          |   81 +-
 bootstrap.js                                       |    4 +-
 package.json                                       |    2 +-
 spec/config_parser.spec.js                         |    3 +-
 spec/create.spec.js                                |    5 +-
 spec/metadata/android_parser.spec.js               |    8 +-
 spec/metadata/blackberry_parser.spec.js            |   10 +-
 spec/metadata/ios_parser.spec.js                   |    8 +-
 spec/platform.spec.js                              |    4 +-
 spec/plugin.spec.js                                |   22 +-
 spec/serve.spec.js                                 |    2 +-
 src/compile.js                                     |    3 +-
 src/create.js                                      |   10 +-
 src/emulate.js                                     |    2 +-
 src/metadata/android_parser.js                     |   24 +-
 src/metadata/ios_parser.js                         |   25 +-
 src/platform.js                                    |   21 +-
 src/plugin_loader.js                               |  191 ++
 src/prepare.js                                     |   10 +-
 src/serve.js                                       |   14 +-
 templates/app/config.xml                           |   49 -
 templates/app/www/css/index.css                    |  100 -
 templates/app/www/img/cordova.png                  |  Bin 19932 -> 0 bytes
 templates/app/www/index.html                       |   24 -
 templates/app/www/js/index.js                      |   20 -
 templates/app/www/res/icon/cordova_128.png         |  Bin 11401 -> 0 bytes
 templates/app/www/res/icon/cordova_16.png          |  Bin 1699 -> 0 bytes
 templates/app/www/res/icon/cordova_24.png          |  Bin 2215 -> 0 bytes
 templates/app/www/res/icon/cordova_256.png         |  Bin 27408 -> 0 bytes
 templates/app/www/res/icon/cordova_32.png          |  Bin 2843 -> 0 bytes
 templates/app/www/res/icon/cordova_48.png          |  Bin 4111 -> 0 bytes
 templates/app/www/res/icon/cordova_512.png         |  Bin 39830 -> 0 bytes
 templates/app/www/res/icon/cordova_64.png          |  Bin 5463 -> 0 bytes
 templates/app/www/res/icon/cordova_android_36.png  |  Bin 3096 -> 0 bytes
 templates/app/www/res/icon/cordova_android_48.png  |  Bin 4090 -> 0 bytes
 templates/app/www/res/icon/cordova_android_72.png  |  Bin 6080 -> 0 bytes
 templates/app/www/res/icon/cordova_android_96.png  |  Bin 7685 -> 0 bytes
 templates/app/www/res/icon/cordova_bb_80.png       |  Bin 7287 -> 0 bytes
 templates/app/www/res/icon/cordova_ios_114.png     |  Bin 7869 -> 0 bytes
 templates/app/www/res/icon/cordova_ios_144.png     |  Bin 11706 -> 0 bytes
 templates/app/www/res/icon/cordova_ios_57.png      |  Bin 3908 -> 0 bytes
 templates/app/www/res/icon/cordova_ios_72.png      |  Bin 4944 -> 0 bytes
 .../app/www/res/screen/android_hdpi_landscape.png  |  Bin 218302 -> 0 bytes
 .../app/www/res/screen/android_hdpi_portrait.png   |  Bin 222148 -> 0 bytes
 .../app/www/res/screen/android_ldpi_landscape.png  |  Bin 42616 -> 0 bytes
 .../app/www/res/screen/android_ldpi_portrait.png   |  Bin 42034 -> 0 bytes
 .../app/www/res/screen/android_mdpi_landscape.png  |  Bin 92347 -> 0 bytes
 .../app/www/res/screen/android_mdpi_portrait.png   |  Bin 90555 -> 0 bytes
 .../app/www/res/screen/android_xhdpi_landscape.png |  Bin 489604 -> 0 bytes
 .../app/www/res/screen/android_xhdpi_portrait.png  |  Bin 504508 -> 0 bytes
 .../www/res/screen/blackberry_transparent_300.png  |  Bin 15823 -> 0 bytes
 .../www/res/screen/blackberry_transparent_400.png  |  Bin 11001 -> 0 bytes
 templates/app/www/res/screen/ipad_landscape.png    |  Bin 407370 -> 0 bytes
 templates/app/www/res/screen/ipad_portrait.png     |  Bin 422441 -> 0 bytes
 .../app/www/res/screen/ipad_retina_landscape.png   |  Bin 1534088 -> 0 bytes
 .../app/www/res/screen/ipad_retina_portrait.png    |  Bin 1610434 -> 0 bytes
 templates/app/www/res/screen/iphone_landscape.png  |  Bin 92301 -> 0 bytes
 templates/app/www/res/screen/iphone_portrait.png   |  Bin 93897 -> 0 bytes
 .../app/www/res/screen/iphone_retina_landscape.png |  Bin 339639 -> 0 bytes
 .../app/www/res/screen/iphone_retina_portrait.png  |  Bin 350593 -> 0 bytes
 .../app/www/res/screen/windows_phone_portrait.jpg  |  Bin 11483 -> 0 bytes
 templates/app/www/spec.html                        |   50 -
 templates/app/www/spec/helper.js                   |   11 -
 templates/app/www/spec/index.js                    |   49 -
 .../app/www/spec/lib/jasmine-1.2.0/MIT.LICENSE     |   20 -
 .../app/www/spec/lib/jasmine-1.2.0/jasmine-html.js |  616 ----
 .../app/www/spec/lib/jasmine-1.2.0/jasmine.css     |   81 -
 .../app/www/spec/lib/jasmine-1.2.0/jasmine.js      | 2529 ---------------
 templates/www/config.xml                           |   49 +
 templates/www/css/index.css                        |  100 +
 templates/www/img/cordova.png                      |  Bin 0 -> 19932 bytes
 templates/www/index.html                           |   24 +
 templates/www/js/index.js                          |   20 +
 templates/www/res/icon/cordova_128.png             |  Bin 0 -> 11401 bytes
 templates/www/res/icon/cordova_16.png              |  Bin 0 -> 1699 bytes
 templates/www/res/icon/cordova_24.png              |  Bin 0 -> 2215 bytes
 templates/www/res/icon/cordova_256.png             |  Bin 0 -> 27408 bytes
 templates/www/res/icon/cordova_32.png              |  Bin 0 -> 2843 bytes
 templates/www/res/icon/cordova_48.png              |  Bin 0 -> 4111 bytes
 templates/www/res/icon/cordova_512.png             |  Bin 0 -> 39830 bytes
 templates/www/res/icon/cordova_64.png              |  Bin 0 -> 5463 bytes
 templates/www/res/icon/cordova_android_36.png      |  Bin 0 -> 3096 bytes
 templates/www/res/icon/cordova_android_48.png      |  Bin 0 -> 4090 bytes
 templates/www/res/icon/cordova_android_72.png      |  Bin 0 -> 6080 bytes
 templates/www/res/icon/cordova_android_96.png      |  Bin 0 -> 7685 bytes
 templates/www/res/icon/cordova_bb_80.png           |  Bin 0 -> 7287 bytes
 templates/www/res/icon/cordova_ios_114.png         |  Bin 0 -> 7869 bytes
 templates/www/res/icon/cordova_ios_144.png         |  Bin 0 -> 11706 bytes
 templates/www/res/icon/cordova_ios_57.png          |  Bin 0 -> 3908 bytes
 templates/www/res/icon/cordova_ios_72.png          |  Bin 0 -> 4944 bytes
 .../www/res/screen/android_hdpi_landscape.png      |  Bin 0 -> 218302 bytes
 templates/www/res/screen/android_hdpi_portrait.png |  Bin 0 -> 222148 bytes
 .../www/res/screen/android_ldpi_landscape.png      |  Bin 0 -> 42616 bytes
 templates/www/res/screen/android_ldpi_portrait.png |  Bin 0 -> 42034 bytes
 .../www/res/screen/android_mdpi_landscape.png      |  Bin 0 -> 92347 bytes
 templates/www/res/screen/android_mdpi_portrait.png |  Bin 0 -> 90555 bytes
 .../www/res/screen/android_xhdpi_landscape.png     |  Bin 0 -> 489604 bytes
 .../www/res/screen/android_xhdpi_portrait.png      |  Bin 0 -> 504508 bytes
 .../www/res/screen/blackberry_transparent_300.png  |  Bin 0 -> 15823 bytes
 .../www/res/screen/blackberry_transparent_400.png  |  Bin 0 -> 11001 bytes
 templates/www/res/screen/ipad_landscape.png        |  Bin 0 -> 407370 bytes
 templates/www/res/screen/ipad_portrait.png         |  Bin 0 -> 422441 bytes
 templates/www/res/screen/ipad_retina_landscape.png |  Bin 0 -> 1534088 bytes
 templates/www/res/screen/ipad_retina_portrait.png  |  Bin 0 -> 1610434 bytes
 templates/www/res/screen/iphone_landscape.png      |  Bin 0 -> 92301 bytes
 templates/www/res/screen/iphone_portrait.png       |  Bin 0 -> 93897 bytes
 .../www/res/screen/iphone_retina_landscape.png     |  Bin 0 -> 339639 bytes
 .../www/res/screen/iphone_retina_portrait.png      |  Bin 0 -> 350593 bytes
 .../www/res/screen/windows_phone_portrait.jpg      |  Bin 0 -> 11483 bytes
 templates/www/spec.html                            |   50 +
 templates/www/spec/helper.js                       |   11 +
 templates/www/spec/index.js                        |   49 +
 templates/www/spec/lib/jasmine-1.2.0/MIT.LICENSE   |   20 +
 .../www/spec/lib/jasmine-1.2.0/jasmine-html.js     |  616 ++++
 templates/www/spec/lib/jasmine-1.2.0/jasmine.css   |   81 +
 templates/www/spec/lib/jasmine-1.2.0/jasmine.js    | 2529 +++++++++++++++
 116 files changed, 3845 insertions(+), 3702 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-cli/blob/22937060/README.md
----------------------------------------------------------------------
diff --git a/README.md b/README.md
index db232ce..48517a2 100644
--- a/README.md
+++ b/README.md
@@ -53,47 +53,45 @@ A Cordova application built with cordova-cli will have the following directory s
 
     myApp/
     |--.cordova/
-    |-- app/
-    | |-- merges/
-    | | |-- android/
-    | | |-- blackberry/
-    | | `-- ios/
-    | |-- www/
-    | `-- config.xml
+    |-- merges/
+    | |-- android/
+    | |-- blackberry/
+    | `-- ios/
     |-- platforms/
     | |-- android/
     | |-- blackberry/
     | `-- ios/
-    `-- plugins/
+    |-- plugins/
+    `-- www/
 
 ## .cordova/
 This directory identifies a tree as a cordova project. Simple configuration information is stored in here (such as BlackBerry environment variables).
 
 Commands other than `create` operate against the project directory itself, rather than the current directory - a search up the current directory's parents is made to find the project directory. Thus, any command (other than `create`) can be used from any subdirectory whose parent is a cordova project directory (same as git).
 
-## app/
-
-Contains your app-specific content: its `www/` files, any `merges/`, and the `config.xml`. If you want to keep your app in source control, this directory should be the top of the repository.
+## merges/
+Platform-specific web assets (HTML, CSS and JavaScript files) are contained within appropriate subfolders in this directory. These are deployed during a `prepare` to the appropriate native directory.  Files placed under `merges/` will override matching files in the `www/` folder for the relevant platform. A quick example, assuming a project structure of:
 
+    merges/
+    |-- ios/
+    | `-- app.js
+    |-- android/
+    | `-- android.js
+    www/
+      `-- app.js
 
-### app/merges/
-Platform-specific web assets (HTML, CSS and JavaScript files) are contained within appropriate subfolders in this directory. These are deployed during a `prepare` to the appropriate native directory.  Files placed under `app/merges/` will override matching files in the `app/www/` folder for the relevant platform. A quick example, assuming a project structure of:
+After building the Android and iOS projects, the Android application will contain both `app.js` and `android.js`. However, the iOS application will only contain an `app.js`, and it will override the "common" `app.js` located inside the `www/` folder above.
 
-    app/
-    |-- merges/
-    | |-- ios/
-    | | `-- app.js
-    | `-- android/
-    |   `-- android.js
-    `--www/
-      `-- app.js
+## platforms/
+Platforms added to your application will have the native application project structures laid out within this directory.
 
-After building the Android and iOS projects, the Android application will contain both `app.js` and `android.js`. However, the iOS application will only contain an `app.js`, and it will be the one from `app/merges/ios/app.js`, overriding the "common" `app.js` located inside `app/www/`.
+## plugins/
+Any added plugins will be extracted or copied into this directory.
 
-### app/www/
-Contains the project's web artifacts, such as .html, .css and .js files. These are your main application assets. They will be copied on a `cordova prepare` to each platform's www directory.
+## www/
+Contains the project's web artifacts, such as .html, .css and .js files. These are your main application assets. The config.xml file within this directory is very important; read on to the next section!
 
-### Your Blanket: app/config.xml
+### Your Blanket: www/config.xml 
 
 This file is what you should be editing to modify your application's metadata. Any time you run any cordova-cli commands, the tool will look at the contents of `config.xml` and use all relevant info from this file to define native application information. cordova-cli supports changing your application's data via the following elements inside the `config.xml` file:
 
@@ -102,12 +100,6 @@ This file is what you should be editing to modify your application's metadata. A
 - The whitelist can be modified using the `<access>` elements. Make sure the `origin` attribute of your `<access>` element points to a valid URL (you can use `*` as wildcard). For more information on the whitelisting syntax, see the [docs.phonegap.com](http://docs.phonegap.com/en/2.2.0/guide_whitelist_index.md.html#Domain%20Whitelist%20Guide). You can use either attribute `uri` ([BlackBerry-proprietary](https://developer.blackberry.com/html5/documentation/access_element_834677_11.html)) or `origin` ([standards-compliant](http://www.w3.org/TR/widgets-access/#attributes)) to denote the domain.
 - Platform-specific preferences can be customized via `<preference>` tags. See [docs.phonegap.com](http://docs.phonegap.com/en/2.3.0/guide_project-settings_index.md.html#Project%20Settings) for a list of preferences you can use.
 
-## platforms/
-Platforms added to your application will have the native application project structures laid out within this directory.
-
-## plugins/
-Any added plugins will be extracted or copied into this directory.
-
 # Hooks
 
 Projects created by cordova-cli have `before` and `after` hooks for each [project command](#project_commands).
@@ -142,20 +134,19 @@ This example shows how to create a project from scratch named KewlApp with iOS a
 The directory structure of KewlApp now looks like this:
 
     KewlApp/
-    |-- .cordova/
-    |-- app/
-    | |-- merges/
-    | | |-- android/
-    | | `-- ios/
-    | `- www/
-    |    `-- index.html
-    |-- platforms/
-    | |-- android/
-    | | `-- …
-    | `-- ios/
-    |   `-- …
-    `-- plugins/
-      `-- Kewlio/
+    |- .cordova/
+    |- mergess/
+       |- android/
+       `- ios/
+    |- platforms/
+       |- android/
+       |  `- …
+       `- ios/
+          `- …
+    |- plugins/
+       `- Kewlio/
+    `- www/
+       `- index.html
 
 # Contributing
 

http://git-wip-us.apache.org/repos/asf/cordova-cli/blob/22937060/bootstrap.js
----------------------------------------------------------------------
diff --git a/bootstrap.js b/bootstrap.js
index 2012bbd..f96df76 100644
--- a/bootstrap.js
+++ b/bootstrap.js
@@ -50,7 +50,7 @@ shell.rm('-rf', cordovaDir);
 create(cordovaDir);
 var platformsDir = path.join(cordovaDir, 'platforms');
 // kill the stupid spec shit!
-shell.rm('-rf', path.join(cordovaDir, 'app', 'www', 'spec'));
+shell.rm('-rf', path.join(cordovaDir, 'www', 'spec'));
 
 var end = n(platforms.length, function() {
     // Check that we are installing globally into a root-only directory.
@@ -91,7 +91,7 @@ platforms.forEach(function(platform) {
                     // copy over to full cordova project test fixture
                     shell.mkdir('-p', platformDir);
                     shell.cp('-rf', path.join(fix_path, '*'), platformDir);
-                    shell.mkdir('-p',path.join(util.appDir(cordovaDir),'merges',platform));
+                    shell.mkdir('-p',path.join(cordovaDir,'merges',platform));
 
                     // set permissions on executables
                     var scripts_path = path.join(fix_path, 'cordova');

http://git-wip-us.apache.org/repos/asf/cordova-cli/blob/22937060/package.json
----------------------------------------------------------------------
diff --git a/package.json b/package.json
index 28aec41..3a41515 100644
--- a/package.json
+++ b/package.json
@@ -23,7 +23,7 @@
   "dependencies": {
     "colors":">=0.6.0",
     "elementtree":"0.1.3",
-    "plugman":"0.6.1",
+    "plugman":"git+https://github.com/imhotep/plugman.git#0.5.7",
     "plist":"git+https://github.com/filmaj/node-plist.git",
     "xcode":"0.5.1",
     "express":"3.0",

http://git-wip-us.apache.org/repos/asf/cordova-cli/blob/22937060/spec/config_parser.spec.js
----------------------------------------------------------------------
diff --git a/spec/config_parser.spec.js b/spec/config_parser.spec.js
index 3745c90..99bc717 100644
--- a/spec/config_parser.spec.js
+++ b/spec/config_parser.spec.js
@@ -24,8 +24,7 @@ var cordova = require('../cordova'),
     config_parser = require('../src/config_parser'),
     tempDir = path.join(__dirname, '..', 'temp'),
     et = require('elementtree'),
-    util = require('../src/util'),
-    xml = util.projectConfig(tempDir);
+    xml = path.join(tempDir, 'www', 'config.xml');
 
 
 describe('config.xml parser', function () {

http://git-wip-us.apache.org/repos/asf/cordova-cli/blob/22937060/spec/create.spec.js
----------------------------------------------------------------------
diff --git a/spec/create.spec.js b/spec/create.spec.js
index da4e544..fcb3e76 100644
--- a/spec/create.spec.js
+++ b/spec/create.spec.js
@@ -2,7 +2,6 @@ var cordova = require('../cordova'),
     path    = require('path'),
     shell   = require('shelljs'),
     fs      = require('fs'),
-    util    = require('../src/util'),
     tempDir = path.join(__dirname, '..', 'temp');
 
 describe('create command', function () {
@@ -55,14 +54,14 @@ describe('create command', function () {
 
         expect(fs.lstatSync(path.join(tempDir, '.cordova', 'config.json')).isFile()).toBe(true);
 
-        expect(fs.readFileSync(util.projectConfig(tempDir)).toString('utf8')).toMatch(/<name>balls<\/name>/);
+        expect(fs.readFileSync(path.join(tempDir, 'www', 'config.xml')).toString('utf8')).toMatch(/<name>balls<\/name>/);
     });
     it('should create a cordova project in the specified dir with specified name and id if provided', function() {
         cordova.create(tempDir, "birdy.nam.nam", "numnum");
 
         expect(fs.lstatSync(path.join(tempDir, '.cordova', 'config.json')).isFile()).toBe(true);
 
-        var config = fs.readFileSync(util.projectConfig(tempDir)).toString('utf8');
+        var config = fs.readFileSync(path.join(tempDir, 'www', 'config.xml')).toString('utf8');
         expect(config).toMatch(/<name>numnum<\/name>/);
         expect(config).toMatch(/id="birdy\.nam\.nam"/);
     });

http://git-wip-us.apache.org/repos/asf/cordova-cli/blob/22937060/spec/metadata/android_parser.spec.js
----------------------------------------------------------------------
diff --git a/spec/metadata/android_parser.spec.js b/spec/metadata/android_parser.spec.js
index b7d106c..d051c6f 100644
--- a/spec/metadata/android_parser.spec.js
+++ b/spec/metadata/android_parser.spec.js
@@ -30,7 +30,7 @@ var android_parser = require('../../src/metadata/android_parser'),
     project_path = path.join(projects_path, 'cordova'),
     android_project_path = path.join(project_path, 'platforms', 'android');
 
-var www_config = util.projectConfig(project_path);
+var www_config = path.join(project_path, 'www', 'config.xml');
 var original_www_config = fs.readFileSync(www_config, 'utf-8');
 
 describe('android project parser', function() {
@@ -158,7 +158,7 @@ describe('android project parser', function() {
         });
         describe('update_www method', function() {
             it('should update all www assets', function() {
-                var newFile = path.join(util.projectWww(project_path), 'somescript.js');
+                var newFile = path.join(project_path, 'www', 'somescript.js');
                 this.after(function() {
                     shell.rm('-f', newFile);
                 });
@@ -173,7 +173,7 @@ describe('android project parser', function() {
         });
 
         describe('update_overrides method',function() {
-            var mergesPath = path.join(util.appDir(project_path), 'merges', 'android');
+            var mergesPath = path.join(project_path, 'merges', 'android');
             var newFile = path.join(mergesPath, 'merge.js');
             beforeEach(function() {
                 shell.mkdir('-p', mergesPath);
@@ -188,7 +188,7 @@ describe('android project parser', function() {
             });
 
             it('should copy a file from merges over a file in www', function() {
-                var newFileWWW = path.join(util.projectWww(project_path), 'merge.js');
+                var newFileWWW = path.join(project_path, 'www','merge.js');
                 fs.writeFileSync(newFileWWW, 'var foo=1;', 'utf-8');
                 this.after(function() {
                     shell.rm('-rf', newFileWWW);

http://git-wip-us.apache.org/repos/asf/cordova-cli/blob/22937060/spec/metadata/blackberry_parser.spec.js
----------------------------------------------------------------------
diff --git a/spec/metadata/blackberry_parser.spec.js b/spec/metadata/blackberry_parser.spec.js
index ada1727..12d5294 100644
--- a/spec/metadata/blackberry_parser.spec.js
+++ b/spec/metadata/blackberry_parser.spec.js
@@ -30,7 +30,7 @@ var blackberry_parser = require('../../src/metadata/blackberry_parser'),
     project_path = path.join(projects_path, 'cordova'),
     blackberry_project_path = path.join(project_path, 'platforms', 'blackberry');
 
-var www_config = util.projectConfig(project_path);
+var www_config = path.join(project_path, 'www', 'config.xml');
 var original_www_config = fs.readFileSync(www_config, 'utf-8');
 
 describe('blackberry project parser', function() {
@@ -128,7 +128,7 @@ describe('blackberry project parser', function() {
 
         describe('update_www method', function() {
             it('should update all www assets', function() {
-                var newFile = path.join(util.projectWww(project_path), 'somescript.js');
+                var newFile = path.join(project_path, 'www', 'somescript.js');
                 this.after(function() {
                     shell.rm('-f', newFile);
                 });
@@ -137,7 +137,7 @@ describe('blackberry project parser', function() {
                 expect(fs.existsSync(path.join(blackberry_project_path, 'www', 'somescript.js'))).toBe(true);
             });
             it('should not overwrite the blackberry-specific config.xml', function() {
-                var www_cfg = fs.readFileSync(util.projectConfig(project_path), 'utf-8');
+                var www_cfg = fs.readFileSync(path.join(project_path, 'www', 'config.xml'), 'utf-8');
                 parser.update_www();
                 var bb_cfg = fs.readFileSync(blackberry_config, 'utf-8');
                 expect(bb_cfg).not.toBe(www_cfg);
@@ -145,7 +145,7 @@ describe('blackberry project parser', function() {
         });
 
         describe('update_overrides method',function() {
-            var mergesPath = path.join(util.appDir(project_path), 'merges', 'blackberry');
+            var mergesPath = path.join(project_path, 'merges', 'blackberry');
             var newFile = path.join(mergesPath, 'merge.js');
             beforeEach(function() {
                 shell.mkdir('-p', mergesPath);
@@ -161,7 +161,7 @@ describe('blackberry project parser', function() {
             });
 
             it('should copy a file from merges over a file in www', function() {
-                var newFileWWW = path.join(util.projectWww(project_path), 'merge.js');
+                var newFileWWW = path.join(project_path, 'www','merge.js');
                 fs.writeFileSync(newFileWWW, 'var foo=1;', 'utf-8');
                 this.after(function() {
                     shell.rm('-rf', newFileWWW);

http://git-wip-us.apache.org/repos/asf/cordova-cli/blob/22937060/spec/metadata/ios_parser.spec.js
----------------------------------------------------------------------
diff --git a/spec/metadata/ios_parser.spec.js b/spec/metadata/ios_parser.spec.js
index e1f92a6..dbd4816 100644
--- a/spec/metadata/ios_parser.spec.js
+++ b/spec/metadata/ios_parser.spec.js
@@ -30,7 +30,7 @@ ios_path = path.join(projects_path, 'native', 'ios_fixture'),
     project_path = path.join(projects_path, 'cordova'),
     ios_project_path = path.join(project_path, 'platforms', 'ios');
 
-var www_config = util.projectConfig(project_path);
+var www_config = path.join(project_path, 'www', 'config.xml');
 var original_www_config = fs.readFileSync(www_config, 'utf-8');
 
 describe('ios project parser', function () {
@@ -147,7 +147,7 @@ describe('ios project parser', function () {
 
         describe('update_www method', function () {
             it('should update all www assets', function () {
-                var newFile = path.join(util.projectWww(project_path), 'somescript.js');
+                var newFile = path.join(project_path, 'www', 'somescript.js');
                 this.after(function () {
                     shell.rm('-f', newFile);
                 });
@@ -162,7 +162,7 @@ describe('ios project parser', function () {
         });
 
         describe('update_overrides method', function () {
-            var mergesPath = path.join(util.appDir(project_path), 'merges', 'ios');
+            var mergesPath = path.join(project_path, 'merges', 'ios');
             var newFile = path.join(mergesPath, 'merge.js');
             beforeEach(function() {
                 shell.mkdir('-p', mergesPath);
@@ -178,7 +178,7 @@ describe('ios project parser', function () {
             });
 
             it('should copy a file from merges over a file in www', function () {
-                var newFileWWW = path.join(util.projectWww(project_path), 'merge.js');
+                var newFileWWW = path.join(project_path, 'www', 'merge.js');
                 fs.writeFileSync(newFileWWW, 'var foo=1;', 'utf-8');
                 this.after(function () {
                     shell.rm('-rf', newFileWWW);

http://git-wip-us.apache.org/repos/asf/cordova-cli/blob/22937060/spec/platform.spec.js
----------------------------------------------------------------------
diff --git a/spec/platform.spec.js b/spec/platform.spec.js
index c5d9f09..7138c7e 100644
--- a/spec/platform.spec.js
+++ b/spec/platform.spec.js
@@ -136,7 +136,7 @@ describe('platform command', function() {
                 shell.mkdir('-p', a_path);
                 fs.writeFileSync(path.join(a_path, 'poo.xcodeproj'), 'hi', 'utf-8');
                 shell.mkdir('-p', path.join(a_path, 'poo'));
-                shell.cp(util.projectConfig(cordova_project), path.join(a_path, 'poo', 'config.xml'));
+                shell.cp(path.join(cordova_project, 'www', 'config.xml'), path.join(a_path, 'poo', 'config.xml'));
                 sh.mostRecentCall.args[2](0, '');
             };
             beforeEach(function() {
@@ -166,7 +166,7 @@ describe('platform command', function() {
                 shell.mkdir('-p', path.join(a_path, 'www'));
                 fs.writeFileSync(path.join(a_path, 'project.properties'), 'hi', 'utf-8');
                 fs.writeFileSync(path.join(a_path, 'build.xml'), 'hi', 'utf-8');
-                shell.cp(util.projectConfig(cordova_project), path.join(a_path, 'www', 'config.xml'));
+                shell.cp(path.join(cordova_project, 'www', 'config.xml'), path.join(a_path, 'www', 'config.xml'));
                 sh.mostRecentCall.args[2](0, '');
             };
             beforeEach(function() {

http://git-wip-us.apache.org/repos/asf/cordova-cli/blob/22937060/spec/plugin.spec.js
----------------------------------------------------------------------
diff --git a/spec/plugin.spec.js b/spec/plugin.spec.js
index a23f9f9..3d370e7 100644
--- a/spec/plugin.spec.js
+++ b/spec/plugin.spec.js
@@ -113,6 +113,24 @@ describe('plugin command', function() {
             process.chdir(cwd);
         });
         describe('failure', function() {
+            it('should throw if your app has no platforms added', function() {
+                expect(function() {
+                    cordova.plugin('add', testPlugin);
+                }).toThrow('You need at least one platform added to your app. Use `cordova platform add <platform>`.');
+            });
+            it('should throw if plugin does not support any app platforms', function() {
+                process.chdir(cordova_project);
+                shell.mv('-f', path.join(cordova_project, 'platforms', 'android'), tempDir);
+                shell.mv('-f', path.join(cordova_project, 'platforms', 'blackberry'), tempDir);
+                this.after(function() {
+                    process.chdir(cwd);
+                    shell.mv('-f', path.join(tempDir, 'android'), path.join(cordova_project, 'platforms'));
+                    shell.mv('-f', path.join(tempDir, 'blackberry'), path.join(cordova_project, 'platforms'));
+                });
+                expect(function() {
+                    cordova.plugin('add', androidPlugin);
+                }).toThrow('Plugin "android" does not support any of your application\'s platforms. Plugin platforms: android; your application\'s platforms: ios');
+            });
             it('should throw if plugin is already added to project', function() {
                 process.chdir(cordova_project);
                 var cb = jasmine.createSpy();
@@ -128,7 +146,7 @@ describe('plugin command', function() {
                 runs(function(){
                     expect(function() {
                         cordova.plugin('add', testPlugin);
-                    }).toThrow();
+                    }).toThrow('Plugin "test" already added to project.');
                 });
             });
             it('should throw if plugin does not have a plugin.xml', function() {
@@ -138,7 +156,7 @@ describe('plugin command', function() {
                 });
                 expect(function() {
                     cordova.plugin('add', fixturesDir);
-                }).toThrow();
+                }).toThrow('Plugin "fixtures" does not have a plugin.xml in the root. Plugin must support the Cordova Plugin Specification: https://github.com/alunny/cordova-plugin-spec');
             });
         });
     });

http://git-wip-us.apache.org/repos/asf/cordova-cli/blob/22937060/spec/serve.spec.js
----------------------------------------------------------------------
diff --git a/spec/serve.spec.js b/spec/serve.spec.js
index 080c273..8d00cab 100644
--- a/spec/serve.spec.js
+++ b/spec/serve.spec.js
@@ -119,7 +119,7 @@ xdescribe('serve command', function() {
 
         it('should serve from top-level www if the file exists there', function() {
             var payload = 'This is test file.';
-            fs.writeFileSync(path.join(util.projectWww(tempDir), 'test.html'), payload);
+            fs.writeFileSync(path.join(tempDir, 'www', 'test.html'), payload);
             test_serve('android', '/test.html', payload)();
         });
 

http://git-wip-us.apache.org/repos/asf/cordova-cli/blob/22937060/src/compile.js
----------------------------------------------------------------------
diff --git a/src/compile.js b/src/compile.js
index cc8dd5c..4efbd6b 100644
--- a/src/compile.js
+++ b/src/compile.js
@@ -55,7 +55,8 @@ module.exports = function compile(platforms, callback) {
         throw new Error('Current working directory is not a Cordova-based project.');
     }
 
-    var xml = cordova_util.projectConfig(projectRoot);
+    var xml = path.join(projectRoot, 'www', 'config.xml');
+    var assets = path.join(projectRoot, 'www');
     var cfg = new config_parser(xml);
 
     if (arguments.length === 0 || (platforms instanceof Array && platforms.length === 0)) {

http://git-wip-us.apache.org/repos/asf/cordova-cli/blob/22937060/src/create.js
----------------------------------------------------------------------
diff --git a/src/create.js b/src/create.js
index 66ab225..0f7c8a6 100644
--- a/src/create.js
+++ b/src/create.js
@@ -21,8 +21,7 @@ var path          = require('path'),
     fs            = require('fs'),
     shell         = require('shelljs'),
     help          = require('./help'),
-    config_parser = require('./config_parser'),
-    util          = require('./util');
+    config_parser = require('./config_parser');
 
 var DEFAULT_NAME = "HelloCordova",
     DEFAULT_ID   = "io.cordova.hellocordova";
@@ -60,9 +59,8 @@ module.exports = function create (dir, id, name) {
     // Create basic project structure.
     shell.mkdir('-p', dotCordova);
     shell.mkdir('-p', path.join(dir, 'platforms'));
+    shell.mkdir('-p', path.join(dir, 'merges'));
     shell.mkdir('-p', path.join(dir, 'plugins'));
-    shell.mkdir('-p', path.join(dir, 'app'));
-    shell.mkdir('-p', path.join(dir, 'app', 'merges'));
     var hooks = path.join(dotCordova, 'hooks');
     shell.mkdir('-p', hooks);
 
@@ -97,10 +95,10 @@ module.exports = function create (dir, id, name) {
     }));
 
     // Copy in base template
-    shell.cp('-r', path.join(__dirname, '..', 'templates', 'app'), dir);
+    shell.cp('-r', path.join(__dirname, '..', 'templates', 'www'), dir);
 
     // Write out id and name to config.xml
-    var configPath = util.projectConfig(dir);
+    var configPath = path.join(dir, 'www', 'config.xml');
     var config = new config_parser(configPath);
     config.packageName(id);
     config.name(name);

http://git-wip-us.apache.org/repos/asf/cordova-cli/blob/22937060/src/emulate.js
----------------------------------------------------------------------
diff --git a/src/emulate.js b/src/emulate.js
index 523b5e0..7acb441 100644
--- a/src/emulate.js
+++ b/src/emulate.js
@@ -60,7 +60,7 @@ module.exports = function emulate (platforms, callback) {
         throw new Error('Current working directory is not a Cordova-based project.');
     }
 
-    var xml = cordova_util.projectConfig(projectRoot);
+    var xml = path.join(projectRoot, 'www', 'config.xml');
     var cfg = new config_parser(xml);
 
     if (arguments.length === 0 || (platforms instanceof Array && platforms.length === 0)) {

http://git-wip-us.apache.org/repos/asf/cordova-cli/blob/22937060/src/metadata/android_parser.js
----------------------------------------------------------------------
diff --git a/src/metadata/android_parser.js b/src/metadata/android_parser.js
index 79c1f2b..3dfaf22 100644
--- a/src/metadata/android_parser.js
+++ b/src/metadata/android_parser.js
@@ -90,7 +90,7 @@ module.exports.prototype = {
         var android_cfg_xml = new config_parser(this.android_config);
         // clean out all existing access elements first
         android_cfg_xml.access.remove();
-        // add only the ones specified in the app/config.xml file
+        // add only the ones specified in the www/config.xml file
         config.access.get().forEach(function(uri) {
             android_cfg_xml.access.add(uri);
         });
@@ -126,17 +126,9 @@ module.exports.prototype = {
         return path.join(this.path, 'assets', 'www');
     },
 
-    staging_dir: function() {
-        return path.join(this.path, '.staging', 'www');
-    },
-
-    config_xml:function(){
-        return this.android_config;
-    },
-
     update_www:function() {
         var projectRoot = util.isCordova(this.path);
-        var www = util.projectWww(projectRoot);
+        var www = path.join(projectRoot, 'www');
         var platformWww = path.join(this.path, 'assets');
         // remove stock platform assets
         shell.rm('-rf', this.www_dir());
@@ -152,28 +144,18 @@ module.exports.prototype = {
     // update the overrides folder into the www folder
     update_overrides:function() {
         var projectRoot = util.isCordova(this.path);
-        var merges_path = path.join(util.appDir(projectRoot), 'merges', 'android');
+        var merges_path = path.join(projectRoot, 'merges', 'android');
         if (fs.existsSync(merges_path)) {
             var overrides = path.join(merges_path, '*');
             shell.cp('-rf', overrides, this.www_dir());
         }
     },
 
-    // update the overrides folder into the www folder
-    update_staging:function() {
-        var projectRoot = util.isCordova(this.path);
-        if (fs.existsSync(this.staging_dir())) {
-            var staging = path.join(this.staging_dir(), '*');
-            shell.cp('-rf', staging, this.www_dir());
-        }
-    },
-
     update_project:function(cfg, callback) {
         var platformWww = path.join(this.path, 'assets');
         this.update_from_config(cfg);
         this.update_www();
         this.update_overrides();
-        this.update_staging();
         // delete any .svn folders copied over
         util.deleteSvnFolders(platformWww);
         if (callback) callback();

http://git-wip-us.apache.org/repos/asf/cordova-cli/blob/22937060/src/metadata/ios_parser.js
----------------------------------------------------------------------
diff --git a/src/metadata/ios_parser.js b/src/metadata/ios_parser.js
index 5c22256..ee235dc 100644
--- a/src/metadata/ios_parser.js
+++ b/src/metadata/ios_parser.js
@@ -55,8 +55,7 @@ module.exports = function ios_parser(project) {
     }
     this.path = project;
     this.pbxproj = path.join(this.xcodeproj, 'project.pbxproj');
-    this.config_path = path.join(this.cordovaproj, 'config.xml');
-    this.config = new config_parser(this.config_path);
+    this.config = new config_parser(path.join(this.cordovaproj, 'config.xml'));
 };
 
 module.exports.check_requirements = function(callback) {
@@ -138,17 +137,9 @@ module.exports.prototype = {
         return path.join(this.path, 'www');
     },
 
-    staging_dir: function() {
-        return path.join(this.path, '.staging', 'www');
-    },
-
-    config_xml:function(){
-        return this.config_path;
-    },
-
     update_www:function() {
         var projectRoot = util.isCordova(this.path);
-        var www = util.projectWww(projectRoot);
+        var www = path.join(projectRoot, 'www');
         var project_www = this.www_dir();
 
         // remove the stock www folder
@@ -165,28 +156,18 @@ module.exports.prototype = {
     // update the overrides folder into the www folder
     update_overrides:function() {
         var projectRoot = util.isCordova(this.path);
-        var merges_path = path.join(util.appDir(projectRoot), 'merges', 'ios');
+        var merges_path = path.join(projectRoot, 'merges', 'ios');
         if (fs.existsSync(merges_path)) {
             var overrides = path.join(merges_path, '*');
             shell.cp('-rf', overrides, this.www_dir());
         }
     },
 
-    // update the overrides folder into the www folder
-    update_staging:function() {
-        var projectRoot = util.isCordova(this.path);
-        if (fs.existsSync(this.staging_dir())) {
-            var staging = path.join(this.staging_dir(), '*');
-            shell.cp('-rf', staging, this.www_dir());
-        }
-    },
-
     update_project:function(cfg, callback) {
         var self = this;
         this.update_from_config(cfg, function() {
             self.update_www();
             self.update_overrides();
-            self.update_staging();
             util.deleteSvnFolders(self.www_dir());
             if (callback) callback();
         });

http://git-wip-us.apache.org/repos/asf/cordova-cli/blob/22937060/src/platform.js
----------------------------------------------------------------------
diff --git a/src/platform.js b/src/platform.js
index 0e31303..00f2157 100644
--- a/src/platform.js
+++ b/src/platform.js
@@ -26,7 +26,6 @@ var config_parser     = require('./config_parser'),
     android_parser    = require('./metadata/android_parser'),
     ios_parser        = require('./metadata/ios_parser'),
     blackberry_parser = require('./metadata/blackberry_parser'),
-    plugman           = require('plugman'),
     shell             = require('shelljs');
 
 var parsers = {
@@ -46,7 +45,7 @@ module.exports = function platform(command, targets, callback) {
         end;
 
     var createOverrides = function(target) {
-        shell.mkdir('-p', path.join(cordova_util.appDir(projectRoot), 'merges', target));
+        shell.mkdir('-p', path.join(projectRoot, 'merges', target));
     };
 
     if (arguments.length === 0) command = 'ls';
@@ -57,7 +56,7 @@ module.exports = function platform(command, targets, callback) {
         });
     }
 
-    var xml = cordova_util.projectConfig(projectRoot);
+    var xml = path.join(projectRoot, 'www', 'config.xml');
     var cfg = new config_parser(xml);
 
     switch(command) {
@@ -87,12 +86,11 @@ module.exports = function platform(command, targets, callback) {
                         // TODO: eventually refactor to allow multiple versions to be created.
                         // Run platform's create script
                         var bin = path.join(cordova_util.libDirectory, 'cordova-' + target, 'bin', 'create');
-                        var args = (target=='ios') ? '--arc' : '';
                         var pkg = cfg.packageName().replace(/[^\w.]/g,'_');
                         var name = cfg.name().replace(/\W/g,'_');
                         // TODO: PLATFORM LIBRARY INCONSISTENCY: order/number of arguments to create
                         // TODO: keep tabs on CB-2300
-                        var command = util.format('"%s" %s "%s" "%s" "%s"', bin, args, output, (target=='blackberry'?name:pkg), name);
+                        var command = util.format('"%s" "%s" "%s" "%s"', bin, output, (target=='blackberry'?name:pkg), name);
 
                         shell.exec(command, {silent:true,async:true}, function(code, create_output) {
                             if (code > 0) {
@@ -103,17 +101,6 @@ module.exports = function platform(command, targets, callback) {
                             parser.update_project(cfg, function() {
                                 createOverrides(target);
                                 hooks.fire('after_platform_add');
-
-                                // Install all currently installed plugins into this new platform.
-                                var pluginsDir = path.join(projectRoot, 'plugins');
-                                var plugins = fs.readdirSync(pluginsDir);
-                                plugins && plugins.forEach(function(plugin) {
-                                    if (!fs.statSync(path.join(projectRoot, 'plugins', plugin)).isDirectory()) {
-                                        return;
-                                    }
-
-                                    plugman.install(target, output, path.basename(plugin), pluginsDir, {}, parser.staging_dir());
-                                });
                                 end();
                             });
                         });
@@ -126,7 +113,7 @@ module.exports = function platform(command, targets, callback) {
             targets.forEach(function(target) {
                 hooks.fire('before_platform_rm');
                 shell.rm('-rf', path.join(projectRoot, 'platforms', target));
-                shell.rm('-rf', path.join(cordova_util.appDir(projectRoot), 'merges', target));
+                shell.rm('-rf', path.join(projectRoot, 'merges', target));
                 hooks.fire('after_platform_rm');
             });
             break;

http://git-wip-us.apache.org/repos/asf/cordova-cli/blob/22937060/src/plugin_loader.js
----------------------------------------------------------------------
diff --git a/src/plugin_loader.js b/src/plugin_loader.js
new file mode 100644
index 0000000..3798e2f
--- /dev/null
+++ b/src/plugin_loader.js
@@ -0,0 +1,191 @@
+/**
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied.  See the License for the
+    specific language governing permissions and limitations
+    under the License.
+*/
+
+var path            = require('path'),
+    fs              = require('fs'),
+    shell           = require('shelljs'),
+    cordova_util    = require('./util'),
+    util            = require('util'),
+    android_parser  = require('./metadata/android_parser'),
+    blackberry_parser= require('./metadata/blackberry_parser'),
+    ios_parser      = require('./metadata/ios_parser'),
+    exec            = require('child_process').exec,
+    et              = require('elementtree');
+
+
+// Called during cordova prepare.
+// Sets up each plugin's Javascript code to be loaded properly.
+module.exports = function plugin_loader(platform) {
+    // Process:
+    // - List all plugins in plugins/.
+    // - Load and parse their plugin.xml files.
+    // - Skip those without support for this platform.
+    // - Build a list of all their js-modules, and platform-specific js-modules.
+    // - For each js-module (general first, then platform):
+    //   - Generate JS code to load it.
+    //   - For each <clobbers>, <merges> or <runs>, generate JS code to perform it.
+    //   - Copy the file, having slapped the cordova.define onto it on the way.
+    // - Append all of this code to the platform's cordova.js
+
+    var projectRoot = cordova_util.isCordova(process.cwd());
+    var plugins_dir = path.join(projectRoot, 'plugins');
+    var plugins = cordova_util.findPlugins(plugins_dir);
+
+    // Placed at the top of cordova.js to delay onDeviceReady until all the plugins
+    // are actually loaded. This is a temporary hack that can be removed once this
+    // prototype is rolled into the main code.
+    var topJS = 'window.__onPluginsLoadedHack = true;\n';
+
+    // The main injected JS, used to inject <script> tags.
+    var js = '';
+
+    // The last part of the injected JS, which runs after all plugins are loaded and
+    // registers the clobbers, merges and runs.
+    var lateJS = '';
+
+    // Add the callback function.
+    js += 'var mapper = cordova.require("cordova/modulemapper");\n';
+    js += 'var scriptCounter = 0;\n';
+    js += 'var scriptCallback = function() {\n';
+    js += 'scriptCounter--;\n';
+    js += 'if (scriptCounter == 0) { scriptsLoaded(); } };\n';
+
+    // <script> tag injection function
+    js += 'function injectScript(path) {\n';
+        js += 'scriptCounter++;\n';
+        js += 'var script = document.createElement("script");\n';
+        js += 'script.onload = scriptCallback;\n';
+        js += 'script.src = path;\n';
+        js += 'document.querySelector("head").appendChild(script);\n';
+    js += '}\n\n';
+
+
+    // Acquire the platform's parser.
+    var parser;
+    switch(platform) {
+        case 'android':
+            parser = new android_parser(path.join(projectRoot, 'platforms', 'android'));
+            break;
+        case 'ios':
+            parser = new ios_parser(path.join(projectRoot, 'platforms', 'ios'));
+            break;
+        case 'blackberry':
+            parser = new blackberry_parser(path.join(projectRoot, 'platforms', 'blackberry'));
+            break;
+    }
+
+    plugins && plugins.forEach(function(plugin) {
+        var pluginDir = path.join(projectRoot, 'plugins', plugin);
+        var xml = new et.ElementTree(et.XML(fs.readFileSync(path.join(pluginDir, 'plugin.xml'), 'utf-8')));
+
+        var plugin_id = xml.getroot().attrib.id;
+
+        // Copy all the <asset>s into the platform's www/
+        var assets = xml.findall('./asset');
+        assets && assets.forEach(function(asset) {
+            var target = asset.attrib.target;
+            var lastSlash = target.lastIndexOf('/');
+            var dirname  = lastSlash < 0 ? ''     : target.substring(0, lastSlash);
+            var basename = lastSlash < 0 ? target : target.substring(lastSlash + 1);
+
+            var targetDir = path.join(parser.www_dir(), dirname);
+            shell.mkdir('-p', targetDir);
+
+            var srcFile = path.join(pluginDir, asset.attrib.src);
+            var targetFile = path.join(targetDir, basename);
+
+            var cpOptions = fs.statSync(srcFile).isDirectory() ? '-Rf' : '-f';
+            shell.cp(cpOptions, [srcFile], targetFile);
+        });
+
+        // And then add the plugins dir to the platform's www.
+        var platformPluginsDir = path.join(parser.www_dir(), 'plugins');
+        shell.mkdir('-p', platformPluginsDir);
+
+        var generalModules = xml.findall('./js-module');
+        var platformTag = xml.find(util.format('./platform[@name="%s"]', platform));
+        if (!platformTag) {
+            return; // Skip plugins that don't support this platform.
+        }
+
+        var platformModules = platformTag.findall('./js-module');
+        generalModules = generalModules || [];
+        var allModules = generalModules.concat(platformModules);
+
+
+        allModules.forEach(function(module) {
+            // Copy the plugin's files into the www directory.
+            var dirname = module.attrib.src;
+            var lastSlash = dirname.lastIndexOf('/');
+            if (lastSlash >= 0) {
+                dirname = dirname.substring(0, lastSlash);
+            } else {
+                dirname = ''; // Just the file, no subdir.
+            }
+
+            var dir = path.join(platformPluginsDir, plugin_id, dirname);
+            shell.mkdir('-p', dir);
+
+            // Read in the file, prepend the cordova.define, and write it back out.
+            var moduleName = plugin_id + '.';
+            if (module.attrib.name) {
+                moduleName += module.attrib.name;
+            } else {
+                var result = module.attrib.src.match(/([^\/]+)\.js/);
+                moduleName += result[1];
+            }
+
+            var scriptContent = fs.readFileSync(path.join(pluginDir, module.attrib.src), 'utf-8');
+            scriptContent = 'cordova.define("' + moduleName + '", function(require, exports, module) {' + scriptContent + '});\n';
+            fs.writeFileSync(path.join(platformPluginsDir, plugin_id, module.attrib.src), scriptContent, 'utf-8');
+
+            // Prepare the injected Javascript code.
+            var jsFile = path.join('plugins', plugin_id, module.attrib.src);
+            js += 'injectScript("' + jsFile + '");\n';
+
+            // Loop over the children, injecting clobber, merge and run code for each.
+            module.getchildren().forEach(function(child) {
+                if (child.tag.toLowerCase() == 'clobbers') {
+                    lateJS += 'mapper.clobbers("' + moduleName + '", "' + child.attrib.target + '");\n';
+                } else if (child.tag.toLowerCase() == 'merges') {
+                    lateJS += 'mapper.merges("' + moduleName + '", "' + child.attrib.target + '");\n';
+                } else if (child.tag.toLowerCase() == 'runs') {
+                    lateJS += 'cordova.require("' + moduleName + '");\n';
+                }
+            });
+            lateJS += '\n\n\n';
+        });
+    });
+
+    // Last step in lateJS that runs after the <script> tags have all loaded and
+    // all modules are properly clobbered: fire onPluginsReady event.
+    lateJS += 'cordova.require("cordova/channel").onPluginsReady.fire();\n';
+
+    // Wrap lateJS into scriptsLoaded(), which will be called after the last <script>
+    // has finished loading.
+    lateJS = 'function scriptsLoaded() {\n' + lateJS + '\n}\n';
+
+    // Now write the generated JS to the platform's cordova.js
+    var cordovaJSPath = path.join(parser.www_dir(), 'cordova.js');
+    var cordovaJS = fs.readFileSync(cordovaJSPath, 'utf-8');
+    cordovaJS = topJS + cordovaJS + '(function() { ' + js + lateJS + '})();';
+    fs.writeFileSync(cordovaJSPath, cordovaJS, 'utf-8');
+};
+
+

http://git-wip-us.apache.org/repos/asf/cordova-cli/blob/22937060/src/prepare.js
----------------------------------------------------------------------
diff --git a/src/prepare.js b/src/prepare.js
index 06a6a18..a5d3ee7 100644
--- a/src/prepare.js
+++ b/src/prepare.js
@@ -29,6 +29,7 @@ var cordova_util      = require('./util'),
     hooker            = require('./hooker'),
     n                 = require('ncallbacks'),
     prompt            = require('prompt'),
+    plugin_loader = require('./plugin_loader'),
     util              = require('util');
 
 var parsers = {
@@ -44,7 +45,7 @@ module.exports = function prepare(platforms, callback) {
         throw new Error('Current working directory is not a Cordova-based project.');
     }
 
-    var xml = cordova_util.projectConfig(projectRoot);
+    var xml = path.join(projectRoot, 'www', 'config.xml');
     var cfg = new config_parser(xml);
 
     if (arguments.length === 0 || (platforms instanceof Array && platforms.length === 0)) {
@@ -69,12 +70,13 @@ module.exports = function prepare(platforms, callback) {
         if (callback) callback();
     });
 
-    var cli = path.join(__dirname, '..', 'node_modules', 'plugman', 'main.js');
-
     // Iterate over each added platform
     platforms.forEach(function(platform) {
         var platformPath = path.join(projectRoot, 'platforms', platform);
         var parser = new parsers[platform](platformPath);
-        parser.update_project(cfg, end);
+        parser.update_project(cfg, function() {
+            plugin_loader(platform);
+            end();
+        });
     });
 };

http://git-wip-us.apache.org/repos/asf/cordova-cli/blob/22937060/src/serve.js
----------------------------------------------------------------------
diff --git a/src/serve.js b/src/serve.js
index 2829847..1967628 100644
--- a/src/serve.js
+++ b/src/serve.js
@@ -30,11 +30,11 @@ var cordova_util = require('./util'),
     url = require("url");
 
 
-function launch_server(www, platform_www, config_xml_path, port) {
+function launch_server(www, platform_www, port) {
     port = port || 8000;
 
     // Searches these directories in order looking for the requested file.
-    var searchPath = [platform_www];
+    var searchPath = [www, platform_www];
 
     var server = http.createServer(function(request, response) {
         var uri = url.parse(request.url).pathname;
@@ -48,9 +48,6 @@ function launch_server(www, platform_www, config_xml_path, port) {
             }
 
             var filename = path.join(searchPath[pathIndex], uri);
-            if(uri === "/config.xml"){
-                filename = config_xml_path;
-            }
 
             fs.exists(filename, function(exists) {
                 if(!exists) {
@@ -85,7 +82,7 @@ module.exports = function serve (platform, port) {
     var returnValue = {};
 
     module.exports.config(platform, port, function (config) {
-        returnValue.server = launch_server(config.paths[0], config.paths[1], config.config_xml_path, port);
+        returnValue.server = launch_server(config.paths[0], config.paths[1], port);
     });
 
     // Hack for testing despite its async nature.
@@ -99,7 +96,7 @@ module.exports.config = function (platform, port, callback) {
         throw new Error('Current working directory is not a Cordova-based project.');
     }
 
-    var xml = cordova_util.projectConfig(projectRoot);
+    var xml = path.join(projectRoot, 'www', 'config.xml');
     var cfg = new config_parser(xml);
 
     // Retrieve the platforms.
@@ -116,8 +113,6 @@ module.exports.config = function (platform, port, callback) {
 
     var result = {
         paths: [],
-        // Config file path
-        config_xml_path : "",
         // Default port is 8000 if not given. This is also the default of the Python module.
         port: port || 8000
     };
@@ -142,7 +137,6 @@ module.exports.config = function (platform, port, callback) {
     // Update the related platform project from the config
     parser.update_project(cfg, function() {
         result.paths.push(parser.www_dir());
-        result.config_xml_path = parser.config_xml();
         callback(result);
     });
 }

http://git-wip-us.apache.org/repos/asf/cordova-cli/blob/22937060/templates/app/config.xml
----------------------------------------------------------------------
diff --git a/templates/app/config.xml b/templates/app/config.xml
deleted file mode 100644
index 206bc56..0000000
--- a/templates/app/config.xml
+++ /dev/null
@@ -1,49 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<widget xmlns     = "http://www.w3.org/ns/widgets"
-        xmlns:gap = "http://phonegap.com/ns/1.0"
-        id        = "io.cordova.hello-cordova"
-        version   = "2.0.0">
-    <name>Hello Cordova</name>
-
-    <description>
-        A sample Apache Cordova application that responds to the deviceready event.
-    </description>
-
-    <author href="http://cordova.io" email="callback-dev@incubator.apache.org">
-        Apache Cordova Team
-    </author>
-
-    <icon src="res/icon/cordova_512.png"        width="512" height="512" />
-    <icon src="res/icon/cordova_android_96.png" width="96"  height="96"  gap:platform="android" />
-    <icon src="res/icon/cordova_bb_80.png"      width="80"  height="80"  gap:platform="blackberry" />
-    <icon src="res/icon/cordova_ios_144.png"    width="144" height="144" gap:platform="ios" />
-
-    <gap:splash src="res/screen/android_hdpi_landscape.png"      width="800"  height="480"  gap:platform="android" />
-    <gap:splash src="res/screen/android_hdpi_portrait.png"       width="480"  height="800"  gap:platform="android" />
-    <gap:splash src="res/screen/android_ldpi_landscape.png"      width="320"  height="200"  gap:platform="android" />
-    <gap:splash src="res/screen/android_ldpi_portrait.png"       width="200"  height="320"  gap:platform="android" />
-    <gap:splash src="res/screen/android_mdpi_landscape.png"      width="480"  height="320"  gap:platform="android" />
-    <gap:splash src="res/screen/android_mdpi_portrait.png"       width="320"  height="480"  gap:platform="android" />
-    <gap:splash src="res/screen/android_xhdpi_landscape.png"     width="1280" height="720"  gap:platform="android" />
-    <gap:splash src="res/screen/android_xhdpi_portrait.png"      width="720"  height="1280" gap:platform="android" />
-    <gap:splash src="res/screen/blackberry_transparent_300.png"  width="300"  height="300"  gap:platform="blackberry" />
-    <gap:splash src="res/screen/blackberry_transparent_400.png"  width="200"  height="200"  gap:platform="blackberry" />
-    <gap:splash src="res/screen/ipad_landscape.png"              width="1024" height="748"  gap:platform="ios" />
-    <gap:splash src="res/screen/ipad_portrait.png"               width="768"  height="1004" gap:platform="ios" />
-    <gap:splash src="res/screen/ipad_retina_landscape.png"       width="2048" height="1496" gap:platform="ios" />
-    <gap:splash src="res/screen/ipad_retina_portrait.png"        width="1536" height="2008" gap:platform="ios" />
-    <gap:splash src="res/screen/iphone_landscape.png"            width="480"  height="320"  gap:platform="ios" />
-    <gap:splash src="res/screen/iphone_portrait.png"             width="320"  height="480"  gap:platform="ios" />
-    <gap:splash src="res/screen/iphone_retina_landscape.png"     width="960"  height="640"  gap:platform="ios" />
-    <gap:splash src="res/screen/iphone_retina_portrait.png"      width="640"  height="960"  gap:platform="ios" />
-    <gap:splash src="res/screen/windows_phone_portrait.jpg"      width="480"  height="800"  gap:platform="winphone" />
-
-    <feature name="http://api.phonegap.com/1.0/device" />
-
-    <preference name="phonegap-version" value="1.9.0" />
-    <preference name="orientation"      value="default" />
-    <preference name="target-device"    value="universal" />
-    <preference name="fullscreen"       value="false" />
-
-    <access origin="*" />
-</widget>

http://git-wip-us.apache.org/repos/asf/cordova-cli/blob/22937060/templates/app/www/css/index.css
----------------------------------------------------------------------
diff --git a/templates/app/www/css/index.css b/templates/app/www/css/index.css
deleted file mode 100644
index c869f87..0000000
--- a/templates/app/www/css/index.css
+++ /dev/null
@@ -1,100 +0,0 @@
-html,
-body {
-    height:100%;
-    font-size:12px;
-    width:100%;
-}
-
-html {
-    display:table;
-}
-
-body {
-    background-color:#A7A7A7;
-    background-image:linear-gradient(top, #A7A7A7 0%, #E4E4E4 51%);
-    background-image:-webkit-linear-gradient(top, #A7A7A7 0%, #E4E4E4 51%);
-    background-image:-ms-linear-gradient(top, #A7A7A7 0%, #E4E4E4 51%);
-    background-image:-webkit-gradient(
-        linear,
-        left top,
-        left bottom,
-        color-stop(0, #A7A7A7),
-        color-stop(0.51, #E4E4E4)
-    );
-    display:table-cell;
-    font-family:'HelveticaNeue-Light', 'HelveticaNeue', Helvetica, Arial, sans-serif;
-    text-transform:uppercase;
-    vertical-align:middle;
-}
-
-.app {
-    background-image:url(../img/cordova.png);
-    background-repeat:no-repeat;
-    margin:0px auto;
-    width:275px;
-}
-
-h1 {
-    font-size:2em;
-    font-weight:300;
-    margin:0px;
-    overflow:visible;
-    padding:0px;
-    text-align:center;
-}
-
-.status {
-    background-color:#333333;
-    border-radius:4px;
-    -webkit-border-radius:4px;
-    color:#FFFFFF;
-    font-size:1em;
-    margin:0px auto;
-    padding:2px 10px;
-    text-align:center;
-    width:100%;
-    max-width:175px;
-}
-
-.status.complete {
-    background-color:#4B946A;
-}
-
-.hide {
-    display:none;
-}
-
-@keyframes fade {
-    from { opacity: 1.0; }
-    50% { opacity: 0.4; }
-    to { opacity: 1.0; }
-}
- 
-@-webkit-keyframes fade {
-    from { opacity: 1.0; }
-    50% { opacity: 0.4; }
-    to { opacity: 1.0; }
-}
- 
-.blink {
-    animation:fade 3000ms infinite;
-    -webkit-animation:fade 3000ms infinite;
-}
-
-/* portrait */
-/* @media screen and (max-aspect-ratio: 1/1) */
-.app {
-    background-position:center top;
-    height:100px;              /* adds enough room for text */
-    padding:180px 0px 0px 0px; /* background height - shadow offset */
-}
-
-/* lanscape (when wide enough) */
-@media screen and (min-aspect-ratio: 1/1) and (min-width:445px) {
-    .app {
-        background-position:left center;
-        height:140px;       /* height + padding = background image size */
-        padding-left:170px; /* background width */
-        padding-top:60px;   /* center the text */
-    }
-}

http://git-wip-us.apache.org/repos/asf/cordova-cli/blob/22937060/templates/app/www/img/cordova.png
----------------------------------------------------------------------
diff --git a/templates/app/www/img/cordova.png b/templates/app/www/img/cordova.png
deleted file mode 100644
index e8169cf..0000000
Binary files a/templates/app/www/img/cordova.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-cli/blob/22937060/templates/app/www/index.html
----------------------------------------------------------------------
diff --git a/templates/app/www/index.html b/templates/app/www/index.html
deleted file mode 100644
index 202af51..0000000
--- a/templates/app/www/index.html
+++ /dev/null
@@ -1,24 +0,0 @@
-<!DOCTYPE html>
-<html>
-    <head>
-        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
-        <meta name = "format-detection" content = "telephone=no"/>
-        <meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width;" />
-        <link rel="stylesheet" type="text/css" href="css/index.css" />
-        <title>Hello Cordova</title>
-    </head>
-    <body>
-        <div class="app">
-            <h1>Apache Cordova</h1>
-            <div id="deviceready">
-                <p class="status pending blink">Connecting to Device</p>
-                <p class="status complete blink hide">Device is Ready</p>
-            </div>
-        </div>
-        <script type="text/javascript" src="cordova.js"></script>
-        <script type="text/javascript" src="js/index.js"></script>
-        <script type="text/javascript">
-            app.initialize();
-        </script>
-    </body>
-</html>

http://git-wip-us.apache.org/repos/asf/cordova-cli/blob/22937060/templates/app/www/js/index.js
----------------------------------------------------------------------
diff --git a/templates/app/www/js/index.js b/templates/app/www/js/index.js
deleted file mode 100644
index 6140331..0000000
--- a/templates/app/www/js/index.js
+++ /dev/null
@@ -1,20 +0,0 @@
-var app = {
-    initialize: function() {
-        this.bind();
-    },
-    bind: function() {
-        document.addEventListener('deviceready', this.deviceready, false);
-    },
-    deviceready: function() {
-        // note that this is an event handler so the scope is that of the event
-        // so we need to call app.report(), and not this.report()
-        app.report('deviceready');
-    },
-    report: function(id) { 
-        console.log("report:" + id);
-        // hide the .pending <p> and show the .complete <p>
-        document.querySelector('#' + id + ' .pending').className += ' hide';
-        var completeElem = document.querySelector('#' + id + ' .complete');
-        completeElem.className = completeElem.className.split('hide').join('');
-    }
-};

http://git-wip-us.apache.org/repos/asf/cordova-cli/blob/22937060/templates/app/www/res/icon/cordova_128.png
----------------------------------------------------------------------
diff --git a/templates/app/www/res/icon/cordova_128.png b/templates/app/www/res/icon/cordova_128.png
deleted file mode 100644
index 3516df3..0000000
Binary files a/templates/app/www/res/icon/cordova_128.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-cli/blob/22937060/templates/app/www/res/icon/cordova_16.png
----------------------------------------------------------------------
diff --git a/templates/app/www/res/icon/cordova_16.png b/templates/app/www/res/icon/cordova_16.png
deleted file mode 100644
index 54e19c5..0000000
Binary files a/templates/app/www/res/icon/cordova_16.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-cli/blob/22937060/templates/app/www/res/icon/cordova_24.png
----------------------------------------------------------------------
diff --git a/templates/app/www/res/icon/cordova_24.png b/templates/app/www/res/icon/cordova_24.png
deleted file mode 100644
index c7d43ad..0000000
Binary files a/templates/app/www/res/icon/cordova_24.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-cli/blob/22937060/templates/app/www/res/icon/cordova_256.png
----------------------------------------------------------------------
diff --git a/templates/app/www/res/icon/cordova_256.png b/templates/app/www/res/icon/cordova_256.png
deleted file mode 100644
index e1cd0e6..0000000
Binary files a/templates/app/www/res/icon/cordova_256.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-cli/blob/22937060/templates/app/www/res/icon/cordova_32.png
----------------------------------------------------------------------
diff --git a/templates/app/www/res/icon/cordova_32.png b/templates/app/www/res/icon/cordova_32.png
deleted file mode 100644
index 734fffc..0000000
Binary files a/templates/app/www/res/icon/cordova_32.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-cli/blob/22937060/templates/app/www/res/icon/cordova_48.png
----------------------------------------------------------------------
diff --git a/templates/app/www/res/icon/cordova_48.png b/templates/app/www/res/icon/cordova_48.png
deleted file mode 100644
index 8ad8bac..0000000
Binary files a/templates/app/www/res/icon/cordova_48.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-cli/blob/22937060/templates/app/www/res/icon/cordova_512.png
----------------------------------------------------------------------
diff --git a/templates/app/www/res/icon/cordova_512.png b/templates/app/www/res/icon/cordova_512.png
deleted file mode 100644
index c9465f3..0000000
Binary files a/templates/app/www/res/icon/cordova_512.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-cli/blob/22937060/templates/app/www/res/icon/cordova_64.png
----------------------------------------------------------------------
diff --git a/templates/app/www/res/icon/cordova_64.png b/templates/app/www/res/icon/cordova_64.png
deleted file mode 100644
index 03b3849..0000000
Binary files a/templates/app/www/res/icon/cordova_64.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-cli/blob/22937060/templates/app/www/res/icon/cordova_android_36.png
----------------------------------------------------------------------
diff --git a/templates/app/www/res/icon/cordova_android_36.png b/templates/app/www/res/icon/cordova_android_36.png
deleted file mode 100644
index cd5032a..0000000
Binary files a/templates/app/www/res/icon/cordova_android_36.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-cli/blob/22937060/templates/app/www/res/icon/cordova_android_48.png
----------------------------------------------------------------------
diff --git a/templates/app/www/res/icon/cordova_android_48.png b/templates/app/www/res/icon/cordova_android_48.png
deleted file mode 100644
index e79c606..0000000
Binary files a/templates/app/www/res/icon/cordova_android_48.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-cli/blob/22937060/templates/app/www/res/icon/cordova_android_72.png
----------------------------------------------------------------------
diff --git a/templates/app/www/res/icon/cordova_android_72.png b/templates/app/www/res/icon/cordova_android_72.png
deleted file mode 100644
index 4d27634..0000000
Binary files a/templates/app/www/res/icon/cordova_android_72.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-cli/blob/22937060/templates/app/www/res/icon/cordova_android_96.png
----------------------------------------------------------------------
diff --git a/templates/app/www/res/icon/cordova_android_96.png b/templates/app/www/res/icon/cordova_android_96.png
deleted file mode 100644
index ec7ffbf..0000000
Binary files a/templates/app/www/res/icon/cordova_android_96.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-cli/blob/22937060/templates/app/www/res/icon/cordova_bb_80.png
----------------------------------------------------------------------
diff --git a/templates/app/www/res/icon/cordova_bb_80.png b/templates/app/www/res/icon/cordova_bb_80.png
deleted file mode 100644
index f86a27a..0000000
Binary files a/templates/app/www/res/icon/cordova_bb_80.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-cli/blob/22937060/templates/app/www/res/icon/cordova_ios_114.png
----------------------------------------------------------------------
diff --git a/templates/app/www/res/icon/cordova_ios_114.png b/templates/app/www/res/icon/cordova_ios_114.png
deleted file mode 100644
index efd9c37..0000000
Binary files a/templates/app/www/res/icon/cordova_ios_114.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-cli/blob/22937060/templates/app/www/res/icon/cordova_ios_144.png
----------------------------------------------------------------------
diff --git a/templates/app/www/res/icon/cordova_ios_144.png b/templates/app/www/res/icon/cordova_ios_144.png
deleted file mode 100644
index dd819da..0000000
Binary files a/templates/app/www/res/icon/cordova_ios_144.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-cli/blob/22937060/templates/app/www/res/icon/cordova_ios_57.png
----------------------------------------------------------------------
diff --git a/templates/app/www/res/icon/cordova_ios_57.png b/templates/app/www/res/icon/cordova_ios_57.png
deleted file mode 100644
index c795fc4..0000000
Binary files a/templates/app/www/res/icon/cordova_ios_57.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-cli/blob/22937060/templates/app/www/res/icon/cordova_ios_72.png
----------------------------------------------------------------------
diff --git a/templates/app/www/res/icon/cordova_ios_72.png b/templates/app/www/res/icon/cordova_ios_72.png
deleted file mode 100644
index b1cfde7..0000000
Binary files a/templates/app/www/res/icon/cordova_ios_72.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-cli/blob/22937060/templates/app/www/res/screen/android_hdpi_landscape.png
----------------------------------------------------------------------
diff --git a/templates/app/www/res/screen/android_hdpi_landscape.png b/templates/app/www/res/screen/android_hdpi_landscape.png
deleted file mode 100644
index a61e2b1..0000000
Binary files a/templates/app/www/res/screen/android_hdpi_landscape.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-cli/blob/22937060/templates/app/www/res/screen/android_hdpi_portrait.png
----------------------------------------------------------------------
diff --git a/templates/app/www/res/screen/android_hdpi_portrait.png b/templates/app/www/res/screen/android_hdpi_portrait.png
deleted file mode 100644
index 5d6a28a..0000000
Binary files a/templates/app/www/res/screen/android_hdpi_portrait.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-cli/blob/22937060/templates/app/www/res/screen/android_ldpi_landscape.png
----------------------------------------------------------------------
diff --git a/templates/app/www/res/screen/android_ldpi_landscape.png b/templates/app/www/res/screen/android_ldpi_landscape.png
deleted file mode 100644
index f3934cd..0000000
Binary files a/templates/app/www/res/screen/android_ldpi_landscape.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-cli/blob/22937060/templates/app/www/res/screen/android_ldpi_portrait.png
----------------------------------------------------------------------
diff --git a/templates/app/www/res/screen/android_ldpi_portrait.png b/templates/app/www/res/screen/android_ldpi_portrait.png
deleted file mode 100644
index 65ad163..0000000
Binary files a/templates/app/www/res/screen/android_ldpi_portrait.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-cli/blob/22937060/templates/app/www/res/screen/android_mdpi_landscape.png
----------------------------------------------------------------------
diff --git a/templates/app/www/res/screen/android_mdpi_landscape.png b/templates/app/www/res/screen/android_mdpi_landscape.png
deleted file mode 100644
index a1b697c..0000000
Binary files a/templates/app/www/res/screen/android_mdpi_landscape.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-cli/blob/22937060/templates/app/www/res/screen/android_mdpi_portrait.png
----------------------------------------------------------------------
diff --git a/templates/app/www/res/screen/android_mdpi_portrait.png b/templates/app/www/res/screen/android_mdpi_portrait.png
deleted file mode 100644
index ea15693..0000000
Binary files a/templates/app/www/res/screen/android_mdpi_portrait.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-cli/blob/22937060/templates/app/www/res/screen/android_xhdpi_landscape.png
----------------------------------------------------------------------
diff --git a/templates/app/www/res/screen/android_xhdpi_landscape.png b/templates/app/www/res/screen/android_xhdpi_landscape.png
deleted file mode 100644
index 79f2f09..0000000
Binary files a/templates/app/www/res/screen/android_xhdpi_landscape.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-cli/blob/22937060/templates/app/www/res/screen/android_xhdpi_portrait.png
----------------------------------------------------------------------
diff --git a/templates/app/www/res/screen/android_xhdpi_portrait.png b/templates/app/www/res/screen/android_xhdpi_portrait.png
deleted file mode 100644
index c2e8042..0000000
Binary files a/templates/app/www/res/screen/android_xhdpi_portrait.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-cli/blob/22937060/templates/app/www/res/screen/blackberry_transparent_300.png
----------------------------------------------------------------------
diff --git a/templates/app/www/res/screen/blackberry_transparent_300.png b/templates/app/www/res/screen/blackberry_transparent_300.png
deleted file mode 100644
index b548bdc..0000000
Binary files a/templates/app/www/res/screen/blackberry_transparent_300.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-cli/blob/22937060/templates/app/www/res/screen/blackberry_transparent_400.png
----------------------------------------------------------------------
diff --git a/templates/app/www/res/screen/blackberry_transparent_400.png b/templates/app/www/res/screen/blackberry_transparent_400.png
deleted file mode 100644
index 3facdf9..0000000
Binary files a/templates/app/www/res/screen/blackberry_transparent_400.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-cli/blob/22937060/templates/app/www/res/screen/ipad_landscape.png
----------------------------------------------------------------------
diff --git a/templates/app/www/res/screen/ipad_landscape.png b/templates/app/www/res/screen/ipad_landscape.png
deleted file mode 100644
index 04be5ac..0000000
Binary files a/templates/app/www/res/screen/ipad_landscape.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-cli/blob/22937060/templates/app/www/res/screen/ipad_portrait.png
----------------------------------------------------------------------
diff --git a/templates/app/www/res/screen/ipad_portrait.png b/templates/app/www/res/screen/ipad_portrait.png
deleted file mode 100644
index 41e839d..0000000
Binary files a/templates/app/www/res/screen/ipad_portrait.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-cli/blob/22937060/templates/app/www/res/screen/ipad_retina_landscape.png
----------------------------------------------------------------------
diff --git a/templates/app/www/res/screen/ipad_retina_landscape.png b/templates/app/www/res/screen/ipad_retina_landscape.png
deleted file mode 100644
index 95c542d..0000000
Binary files a/templates/app/www/res/screen/ipad_retina_landscape.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-cli/blob/22937060/templates/app/www/res/screen/ipad_retina_portrait.png
----------------------------------------------------------------------
diff --git a/templates/app/www/res/screen/ipad_retina_portrait.png b/templates/app/www/res/screen/ipad_retina_portrait.png
deleted file mode 100644
index aae1862..0000000
Binary files a/templates/app/www/res/screen/ipad_retina_portrait.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-cli/blob/22937060/templates/app/www/res/screen/iphone_landscape.png
----------------------------------------------------------------------
diff --git a/templates/app/www/res/screen/iphone_landscape.png b/templates/app/www/res/screen/iphone_landscape.png
deleted file mode 100644
index d154883..0000000
Binary files a/templates/app/www/res/screen/iphone_landscape.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-cli/blob/22937060/templates/app/www/res/screen/iphone_portrait.png
----------------------------------------------------------------------
diff --git a/templates/app/www/res/screen/iphone_portrait.png b/templates/app/www/res/screen/iphone_portrait.png
deleted file mode 100644
index 6fcba56..0000000
Binary files a/templates/app/www/res/screen/iphone_portrait.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-cli/blob/22937060/templates/app/www/res/screen/iphone_retina_landscape.png
----------------------------------------------------------------------
diff --git a/templates/app/www/res/screen/iphone_retina_landscape.png b/templates/app/www/res/screen/iphone_retina_landscape.png
deleted file mode 100644
index 0165669..0000000
Binary files a/templates/app/www/res/screen/iphone_retina_landscape.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-cli/blob/22937060/templates/app/www/res/screen/iphone_retina_portrait.png
----------------------------------------------------------------------
diff --git a/templates/app/www/res/screen/iphone_retina_portrait.png b/templates/app/www/res/screen/iphone_retina_portrait.png
deleted file mode 100644
index bd24886..0000000
Binary files a/templates/app/www/res/screen/iphone_retina_portrait.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-cli/blob/22937060/templates/app/www/res/screen/windows_phone_portrait.jpg
----------------------------------------------------------------------
diff --git a/templates/app/www/res/screen/windows_phone_portrait.jpg b/templates/app/www/res/screen/windows_phone_portrait.jpg
deleted file mode 100644
index 9f95387..0000000
Binary files a/templates/app/www/res/screen/windows_phone_portrait.jpg and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-cli/blob/22937060/templates/app/www/spec.html
----------------------------------------------------------------------
diff --git a/templates/app/www/spec.html b/templates/app/www/spec.html
deleted file mode 100644
index 83d7d2e..0000000
--- a/templates/app/www/spec.html
+++ /dev/null
@@ -1,50 +0,0 @@
-<!DOCTYPE html>
-<html>
-    <head>
-        <title>Jasmine Spec Runner</title>
-
-        <!-- jasmine source -->
-        <link rel="shortcut icon" type="image/png" href="spec/lib/jasmine-1.2.0/jasmine_favicon.png">
-        <link rel="stylesheet" type="text/css" href="spec/lib/jasmine-1.2.0/jasmine.css">
-        <script type="text/javascript" src="spec/lib/jasmine-1.2.0/jasmine.js"></script>
-        <script type="text/javascript" src="spec/lib/jasmine-1.2.0/jasmine-html.js"></script>
-
-        <!-- include source files here... -->
-        <script type="text/javascript" src="js/index.js"></script>
-
-        <!-- include spec files here... -->
-        <script type="text/javascript" src="spec/helper.js"></script>
-        <script type="text/javascript" src="spec/index.js"></script>
-
-        <script type="text/javascript">
-            (function() {
-                var jasmineEnv = jasmine.getEnv();
-                jasmineEnv.updateInterval = 1000;
-
-                var htmlReporter = new jasmine.HtmlReporter();
-
-                jasmineEnv.addReporter(htmlReporter);
-
-                jasmineEnv.specFilter = function(spec) {
-                    return htmlReporter.specFilter(spec);
-                };
-
-                var currentWindowOnload = window.onload;
-
-                window.onload = function() {
-                    if (currentWindowOnload) {
-                        currentWindowOnload();
-                    }
-                    execJasmine();
-                };
-
-                function execJasmine() {
-                    jasmineEnv.execute();
-                }
-            })();
-        </script>
-    </head>
-    <body>
-        <div id="stage" style="display:none;"></div>
-    </body>
-</html>

http://git-wip-us.apache.org/repos/asf/cordova-cli/blob/22937060/templates/app/www/spec/helper.js
----------------------------------------------------------------------
diff --git a/templates/app/www/spec/helper.js b/templates/app/www/spec/helper.js
deleted file mode 100644
index 9f99445..0000000
--- a/templates/app/www/spec/helper.js
+++ /dev/null
@@ -1,11 +0,0 @@
-afterEach(function() {
-    document.getElementById('stage').innerHTML = '';
-});
-
-var helper = {
-    trigger: function(obj, name) {
-        var e = document.createEvent('Event');
-        e.initEvent(name, true, true);
-        obj.dispatchEvent(e);
-    }
-};

http://git-wip-us.apache.org/repos/asf/cordova-cli/blob/22937060/templates/app/www/spec/index.js
----------------------------------------------------------------------
diff --git a/templates/app/www/spec/index.js b/templates/app/www/spec/index.js
deleted file mode 100644
index 121cf63..0000000
--- a/templates/app/www/spec/index.js
+++ /dev/null
@@ -1,49 +0,0 @@
-describe('app', function() {
-    describe('initialize', function() {
-        it('should bind deviceready', function() {
-            runs(function() {
-                spyOn(app, 'deviceready');
-                app.initialize();
-                helper.trigger(window.document, 'deviceready');
-            });
-
-            waitsFor(function() {
-                return (app.deviceready.calls.length > 0);
-            }, 'deviceready should be called once', 500);
-
-            runs(function() {
-                expect(app.deviceready).toHaveBeenCalled();
-            });
-        });
-    });
-
-    describe('deviceready', function() {
-        it('should report that it fired', function() {
-            spyOn(app, 'report');
-            app.deviceready();
-            expect(app.report).toHaveBeenCalledWith('deviceready');
-        });
-    });
-
-    describe('report', function() {
-        beforeEach(function() {
-            var el = document.getElementById('stage');
-            el.innerHTML = ['<div id="deviceready">',
-                            '    <p class="status pending">Pending</p>',
-                            '    <p class="status complete hide">Complete</p>',
-                            '</div>'].join('\n');
-        });
-
-        it('should show the completion state', function() {
-            app.report('deviceready');
-            var el = document.querySelector('#deviceready .complete:not(.hide)');
-            expect(el).toBeTruthy();
-        });
-
-        it('should hide the pending state', function() {
-            app.report('deviceready');
-            var el = document.querySelector('#deviceready .pending.hide');
-            expect(el).toBeTruthy();
-        });
-    });
-});

http://git-wip-us.apache.org/repos/asf/cordova-cli/blob/22937060/templates/app/www/spec/lib/jasmine-1.2.0/MIT.LICENSE
----------------------------------------------------------------------
diff --git a/templates/app/www/spec/lib/jasmine-1.2.0/MIT.LICENSE b/templates/app/www/spec/lib/jasmine-1.2.0/MIT.LICENSE
deleted file mode 100644
index 7c435ba..0000000
--- a/templates/app/www/spec/lib/jasmine-1.2.0/MIT.LICENSE
+++ /dev/null
@@ -1,20 +0,0 @@
-Copyright (c) 2008-2011 Pivotal Labs
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


Mime
View raw message