You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by st...@apache.org on 2017/05/01 21:17:43 UTC

[61/63] [abbrv] cordova-lib git commit: CB-11242: removed support for platforms that don't have a package.json

http://git-wip-us.apache.org/repos/asf/cordova-lib/blob/677d2529/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/device.js
----------------------------------------------------------------------
diff --git a/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/device.js b/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/device.js
deleted file mode 100644
index 4b171db..0000000
--- a/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/device.js
+++ /dev/null
@@ -1,120 +0,0 @@
-#!/usr/bin/env node
-
-/*
-       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 Q     = require('q'),
-    build = require('./build');
-var path = require('path');
-var Adb = require('./Adb');
-var AndroidManifest = require('./AndroidManifest');
-var spawn = require('cordova-common').superspawn.spawn;
-var CordovaError = require('cordova-common').CordovaError;
-var events = require('cordova-common').events;
-
-/**
- * Returns a promise for the list of the device ID's found
- * @param lookHarder When true, try restarting adb if no devices are found.
- */
-module.exports.list = function(lookHarder) {
-    return Adb.devices()
-    .then(function(list) {
-        if (list.length === 0 && lookHarder) {
-            // adb kill-server doesn't seem to do the trick.
-            // Could probably find a x-platform version of killall, but I'm not actually
-            // sure that this scenario even happens on non-OSX machines.
-            return spawn('killall', ['adb'])
-            .then(function() {
-                events.emit('verbose', 'Restarting adb to see if more devices are detected.');
-                return Adb.devices();
-            }, function() {
-                // For non-killall OS's.
-                return list;
-            });
-        }
-        return list;
-    });
-};
-
-module.exports.resolveTarget = function(target) {
-    return this.list(true)
-    .then(function(device_list) {
-        if (!device_list || !device_list.length) {
-            return Q.reject(new CordovaError('Failed to deploy to device, no devices found.'));
-        }
-        // default device
-        target = target || device_list[0];
-
-        if (device_list.indexOf(target) < 0) {
-            return Q.reject('ERROR: Unable to find target \'' + target + '\'.');
-        }
-
-        return build.detectArchitecture(target)
-        .then(function(arch) {
-            return { target: target, arch: arch, isEmulator: false };
-        });
-    });
-};
-
-/*
- * Installs a previously built application on the device
- * and launches it.
- * Returns a promise.
- */
-module.exports.install = function(target, buildResults) {
-    return Q().then(function() {
-        if (target && typeof target == 'object') {
-            return target;
-        }
-        return module.exports.resolveTarget(target);
-    }).then(function(resolvedTarget) {
-        var apk_path = build.findBestApkForArchitecture(buildResults, resolvedTarget.arch);
-        var manifest = new AndroidManifest(path.join(__dirname, '../../AndroidManifest.xml'));
-        var pkgName = manifest.getPackageId();
-        var launchName = pkgName + '/.' + manifest.getActivity().getName();
-        events.emit('log', 'Using apk: ' + apk_path);
-        events.emit('log', 'Package name: ' + pkgName);
-
-        return Adb.install(resolvedTarget.target, apk_path, {replace: true})
-        .catch(function (error) {
-            // CB-9557 CB-10157 only uninstall and reinstall app if the one that
-            // is already installed on device was signed w/different certificate
-            if (!/INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES/.test(error.toString()))
-                throw error;
-
-            events.emit('warn', 'Uninstalling app from device and reinstalling it again because the ' +
-                'installed app already signed with different key');
-
-            // This promise is always resolved, even if 'adb uninstall' fails to uninstall app
-            // or the app doesn't installed at all, so no error catching needed.
-            return Adb.uninstall(resolvedTarget.target, pkgName)
-            .then(function() {
-                return Adb.install(resolvedTarget.target, apk_path, {replace: true});
-            });
-        })
-        .then(function() {
-            //unlock screen
-            return Adb.shell(resolvedTarget.target, 'input keyevent 82');
-        }).then(function() {
-            return Adb.start(resolvedTarget.target, launchName);
-        }).then(function() {
-            events.emit('log', 'LAUNCH SUCCESS');
-        });
-    });
-};

http://git-wip-us.apache.org/repos/asf/cordova-lib/blob/677d2529/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/emulator.js
----------------------------------------------------------------------
diff --git a/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/emulator.js b/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/emulator.js
deleted file mode 100644
index ff1e261..0000000
--- a/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/emulator.js
+++ /dev/null
@@ -1,443 +0,0 @@
-#!/usr/bin/env node
-
-/*
-       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.
-*/
-
-/* jshint sub:true */
-
-var retry      = require('./retry');
-var build      = require('./build');
-var path = require('path');
-var Adb = require('./Adb');
-var AndroidManifest = require('./AndroidManifest');
-var events = require('cordova-common').events;
-var spawn = require('cordova-common').superspawn.spawn;
-var CordovaError = require('cordova-common').CordovaError;
-
-var Q             = require('q');
-var os            = require('os');
-var child_process = require('child_process');
-
-// constants
-var ONE_SECOND              = 1000; // in milliseconds
-var ONE_MINUTE              = 60 * ONE_SECOND; // in milliseconds
-var INSTALL_COMMAND_TIMEOUT = 5 * ONE_MINUTE; // in milliseconds
-var NUM_INSTALL_RETRIES     = 3;
-var CHECK_BOOTED_INTERVAL   = 3 * ONE_SECOND; // in milliseconds
-var EXEC_KILL_SIGNAL        = 'SIGKILL';
-
-/**
- * Returns a Promise for a list of emulator images in the form of objects
- * {
-       name   : <emulator_name>,
-       path   : <path_to_emulator_image>,
-       target : <api_target>,
-       abi    : <cpu>,
-       skin   : <skin>
-   }
- */
-module.exports.list_images = function() {
-    return spawn('android', ['list', 'avds'])
-    .then(function(output) {
-        var response = output.split('\n');
-        var emulator_list = [];
-        for (var i = 1; i < response.length; i++) {
-            // To return more detailed information use img_obj
-            var img_obj = {};
-            if (response[i].match(/Name:\s/)) {
-                img_obj['name'] = response[i].split('Name: ')[1].replace('\r', '');
-                if (response[i + 1].match(/Device:\s/)) {
-                    i++;
-                    img_obj['device'] = response[i].split('Device: ')[1].replace('\r', '');
-                }
-                if (response[i + 1].match(/Path:\s/)) {
-                    i++;
-                    img_obj['path'] = response[i].split('Path: ')[1].replace('\r', '');
-                }
-                if (response[i + 1].match(/\(API\slevel\s/) || (response[i + 2] && response[i + 2].match(/\(API\slevel\s/))) {
-                    i++;
-                    var secondLine = response[i + 1].match(/\(API\slevel\s/) ? response[i + 1] : '';
-                    img_obj['target'] = (response[i] + secondLine).split('Target: ')[1].replace('\r', '');
-                }
-                if (response[i + 1].match(/ABI:\s/)) {
-                    i++;
-                    img_obj['abi'] = response[i].split('ABI: ')[1].replace('\r', '');
-                }
-                if (response[i + 1].match(/Skin:\s/)) {
-                    i++;
-                    img_obj['skin'] = response[i].split('Skin: ')[1].replace('\r', '');
-                }
-
-                emulator_list.push(img_obj);
-            }
-            /* To just return a list of names use this
-            if (response[i].match(/Name:\s/)) {
-                emulator_list.push(response[i].split('Name: ')[1].replace('\r', '');
-            }*/
-
-        }
-        return emulator_list;
-    });
-};
-
-/**
- * Will return the closest avd to the projects target
- * or undefined if no avds exist.
- * Returns a promise.
- */
-module.exports.best_image = function() {
-    return this.list_images()
-    .then(function(images) {
-        // Just return undefined if there is no images
-        if (images.length === 0) return;
-
-        var closest = 9999;
-        var best = images[0];
-        // Loading check_reqs at run-time to avoid test-time vs run-time directory structure difference issue
-        var project_target = require('./check_reqs').get_target().replace('android-', '');
-        for (var i in images) {
-            var target = images[i].target;
-            if(target) {
-                var num = target.split('(API level ')[1].replace(')', '');
-                if (num == project_target) {
-                    return images[i];
-                } else if (project_target - num < closest && project_target > num) {
-                    closest = project_target - num;
-                    best = images[i];
-                }
-            }
-        }
-        return best;
-    });
-};
-
-// Returns a promise.
-module.exports.list_started = function() {
-    return Adb.devices({emulators: true});
-};
-
-// Returns a promise.
-module.exports.list_targets = function() {
-    return spawn('android', ['list', 'targets'], {cwd: os.tmpdir()})
-    .then(function(output) {
-        var target_out = output.split('\n');
-        var targets = [];
-        for (var i = target_out.length; i >= 0; i--) {
-            if(target_out[i].match(/id:/)) {
-                targets.push(targets[i].split(' ')[1]);
-            }
-        }
-        return targets;
-    });
-};
-
-/*
- * Gets unused port for android emulator, between 5554 and 5584
- * Returns a promise.
- */
-module.exports.get_available_port = function () {
-    var self = this;
-
-    return self.list_started()
-    .then(function (emulators) {
-        for (var p = 5584; p >= 5554; p-=2) {
-            if (emulators.indexOf('emulator-' + p) === -1) {
-                events.emit('verbose', 'Found available port: ' + p);
-                return p;
-            }
-        }
-        throw new CordovaError('Could not find an available avd port');
-    });
-};
-
-/*
- * Starts an emulator with the given ID,
- * and returns the started ID of that emulator.
- * If no ID is given it will use the first image available,
- * if no image is available it will error out (maybe create one?).
- * If no boot timeout is given or the value is negative it will wait forever for
- * the emulator to boot
- *
- * Returns a promise.
- */
-module.exports.start = function(emulator_ID, boot_timeout) {
-    var self = this;
-
-    return Q().then(function() {
-        if (emulator_ID) return Q(emulator_ID);
-
-        return self.best_image()
-        .then(function(best) {
-            if (best && best.name) {
-                events.emit('warn', 'No emulator specified, defaulting to ' + best.name);
-                return best.name;
-            }
-
-            // Loading check_reqs at run-time to avoid test-time vs run-time directory structure difference issue
-            var androidCmd = require('./check_reqs').getAbsoluteAndroidCmd();
-            return Q.reject(new CordovaError('No emulator images (avds) found.\n' +
-                '1. Download desired System Image by running: ' + androidCmd + ' sdk\n' +
-                '2. Create an AVD by running: ' + androidCmd + ' avd\n' +
-                'HINT: For a faster emulator, use an Intel System Image and install the HAXM device driver\n'));
-        });
-    }).then(function(emulatorId) {
-        return self.get_available_port()
-        .then(function (port) {
-            var args = ['-avd', emulatorId, '-port', port];
-            // Don't wait for it to finish, since the emulator will probably keep running for a long time.
-            child_process
-                .spawn('emulator', args, { stdio: 'inherit', detached: true })
-                .unref();
-
-            // wait for emulator to start
-            events.emit('log', 'Waiting for emulator to start...');
-            return self.wait_for_emulator(port);
-        });
-    }).then(function(emulatorId) {
-        if (!emulatorId)
-            return Q.reject(new CordovaError('Failed to start emulator'));
-
-        //wait for emulator to boot up
-        process.stdout.write('Waiting for emulator to boot (this may take a while)...');
-        return self.wait_for_boot(emulatorId, boot_timeout)
-        .then(function(success) {
-            if (success) {
-                events.emit('log','BOOT COMPLETE');
-                //unlock screen
-                return Adb.shell(emulatorId, 'input keyevent 82')
-                .then(function() {
-                    //return the new emulator id for the started emulators
-                    return emulatorId;
-                });
-            } else {
-                // We timed out waiting for the boot to happen
-                return null;
-            }
-        });
-    });
-};
-
-/*
- * Waits for an emulator to boot on a given port.
- * Returns this emulator's ID in a promise.
- */
-module.exports.wait_for_emulator = function(port) {
-    var self = this;
-    return Q().then(function() {
-        var emulator_id = 'emulator-' + port;
-        return Adb.shell(emulator_id, 'getprop dev.bootcomplete')
-        .then(function (output) {
-            if (output.indexOf('1') >= 0) {
-                return emulator_id;
-            }
-            return self.wait_for_emulator(port);
-        }, function (error) {
-            if (error && error.message &&
-            (error.message.indexOf('not found') > -1) ||
-            error.message.indexOf('device offline') > -1) {
-                // emulator not yet started, continue waiting
-                return self.wait_for_emulator(port);
-            } else {
-                // something unexpected has happened
-                throw error;
-            }
-        });
-     });
-};
-
-/*
- * Waits for the core android process of the emulator to start. Returns a
- * promise that resolves to a boolean indicating success. Not specifying a
- * time_remaining or passing a negative value will cause it to wait forever
- */
-module.exports.wait_for_boot = function(emulator_id, time_remaining) {
-    var self = this;
-    return Adb.shell(emulator_id, 'ps')
-    .then(function(output) {
-        if (output.match(/android\.process\.acore/)) {
-            return true;
-        } else if (time_remaining === 0) {
-            return false;
-        } else {
-            process.stdout.write('.');
-
-            // Check at regular intervals
-            return Q.delay(time_remaining < CHECK_BOOTED_INTERVAL ? time_remaining : CHECK_BOOTED_INTERVAL).then(function() {
-                var updated_time = time_remaining >= 0 ? Math.max(time_remaining - CHECK_BOOTED_INTERVAL, 0) : time_remaining;
-                return self.wait_for_boot(emulator_id, updated_time);
-            });
-        }
-    });
-};
-
-/*
- * Create avd
- * TODO : Enter the stdin input required to complete the creation of an avd.
- * Returns a promise.
- */
-module.exports.create_image = function(name, target) {
-    console.log('Creating new avd named ' + name);
-    if (target) {
-        return spawn('android', ['create', 'avd', '--name', name, '--target', target])
-        .then(null, function(error) {
-            console.error('ERROR : Failed to create emulator image : ');
-            console.error(' Do you have the latest android targets including ' + target + '?');
-            console.error(error);
-        });
-    } else {
-        console.log('WARNING : Project target not found, creating avd with a different target but the project may fail to install.');
-        return spawn('android', ['create', 'avd', '--name', name, '--target', this.list_targets()[0]])
-        .then(function() {
-            // TODO: This seems like another error case, even though it always happens.
-            console.error('ERROR : Unable to create an avd emulator, no targets found.');
-            console.error('Ensure you have targets available by running the "android" command');
-            return Q.reject();
-        }, function(error) {
-            console.error('ERROR : Failed to create emulator image : ');
-            console.error(error);
-        });
-    }
-};
-
-module.exports.resolveTarget = function(target) {
-    return this.list_started()
-    .then(function(emulator_list) {
-        if (emulator_list.length < 1) {
-            return Q.reject('No running Android emulators found, please start an emulator before deploying your project.');
-        }
-
-        // default emulator
-        target = target || emulator_list[0];
-        if (emulator_list.indexOf(target) < 0) {
-            return Q.reject('Unable to find target \'' + target + '\'. Failed to deploy to emulator.');
-        }
-
-        return build.detectArchitecture(target)
-        .then(function(arch) {
-            return {target:target, arch:arch, isEmulator:true};
-        });
-    });
-};
-
-/*
- * Installs a previously built application on the emulator and launches it.
- * If no target is specified, then it picks one.
- * If no started emulators are found, error out.
- * Returns a promise.
- */
-module.exports.install = function(givenTarget, buildResults) {
-
-    var target;
-    var manifest = new AndroidManifest(path.join(__dirname, '../../AndroidManifest.xml'));
-    var pkgName = manifest.getPackageId();
-
-    // resolve the target emulator
-    return Q().then(function () {
-        if (givenTarget && typeof givenTarget == 'object') {
-            return givenTarget;
-        } else {
-            return module.exports.resolveTarget(givenTarget);
-        }
-
-    // set the resolved target
-    }).then(function (resolvedTarget) {
-        target = resolvedTarget;
-
-    // install the app
-    }).then(function () {
-        // This promise is always resolved, even if 'adb uninstall' fails to uninstall app
-        // or the app doesn't installed at all, so no error catching needed.
-        return Q.when()
-        .then(function() {
-
-            var apk_path = build.findBestApkForArchitecture(buildResults, target.arch);
-            var execOptions = {
-                cwd: os.tmpdir(),
-                timeout:    INSTALL_COMMAND_TIMEOUT, // in milliseconds
-                killSignal: EXEC_KILL_SIGNAL
-            };
-
-            events.emit('log', 'Using apk: ' + apk_path);
-            events.emit('log', 'Package name: ' + pkgName);
-            events.emit('verbose', 'Installing app on emulator...');
-
-            // A special function to call adb install in specific environment w/ specific options.
-            // Introduced as a part of fix for http://issues.apache.org/jira/browse/CB-9119
-            // to workaround sporadic emulator hangs
-            function adbInstallWithOptions(target, apk, opts) {
-                events.emit('verbose', 'Installing apk ' + apk + ' on ' + target + '...');
-
-                var command = 'adb -s ' + target + ' install -r "' + apk + '"';
-                return Q.promise(function (resolve, reject) {
-                    child_process.exec(command, opts, function(err, stdout, stderr) {
-                        if (err) reject(new CordovaError('Error executing "' + command + '": ' + stderr));
-                        // adb does not return an error code even if installation fails. Instead it puts a specific
-                        // message to stdout, so we have to use RegExp matching to detect installation failure.
-                        else if (/Failure/.test(stdout)) {
-                            if (stdout.match(/INSTALL_PARSE_FAILED_NO_CERTIFICATES/)) {
-                                stdout += 'Sign the build using \'-- --keystore\' or \'--buildConfig\'' +
-                                    ' or sign and deploy the unsigned apk manually using Android tools.';
-                            } else if (stdout.match(/INSTALL_FAILED_VERSION_DOWNGRADE/)) {
-                                stdout += 'You\'re trying to install apk with a lower versionCode that is already installed.' +
-                                    '\nEither uninstall an app or increment the versionCode.';
-                            }
-
-                            reject(new CordovaError('Failed to install apk to emulator: ' + stdout));
-                        } else resolve(stdout);
-                    });
-                });
-            }
-
-            function installPromise () {
-                return adbInstallWithOptions(target.target, apk_path, execOptions)
-                .catch(function (error) {
-                    // CB-9557 CB-10157 only uninstall and reinstall app if the one that
-                    // is already installed on device was signed w/different certificate
-                    if (!/INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES/.test(error.toString()))
-                        throw error;
-
-                    events.emit('warn', 'Uninstalling app from device and reinstalling it because the ' +
-                        'currently installed app was signed with different key');
-
-                    // This promise is always resolved, even if 'adb uninstall' fails to uninstall app
-                    // or the app doesn't installed at all, so no error catching needed.
-                    return Adb.uninstall(target.target, pkgName)
-                    .then(function() {
-                        return adbInstallWithOptions(target.target, apk_path, execOptions);
-                    });
-                });
-            }
-
-            return retry.retryPromise(NUM_INSTALL_RETRIES, installPromise)
-            .then(function (output) {
-                events.emit('log', 'INSTALL SUCCESS');
-            });
-        });
-    // unlock screen
-    }).then(function () {
-
-        events.emit('verbose', 'Unlocking screen...');
-        return Adb.shell(target.target, 'input keyevent 82');
-    }).then(function () {
-        Adb.start(target.target, pkgName + '/.' + manifest.getActivity().getName());
-    // report success or failure
-    }).then(function (output) {
-        events.emit('log', 'LAUNCH SUCCESS');
-    });
-};

http://git-wip-us.apache.org/repos/asf/cordova-lib/blob/677d2529/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/install-device
----------------------------------------------------------------------
diff --git a/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/install-device b/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/install-device
deleted file mode 100755
index fc4b784..0000000
--- a/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/install-device
+++ /dev/null
@@ -1,42 +0,0 @@
-#!/usr/bin/env node
-
-/*
-       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 device = require('./device'),
-    args   = process.argv;
-
-if(args.length > 2) {
-    var install_target;
-    if (args[2].substring(0, 9) == '--target=') {
-        install_target = args[2].substring(9, args[2].length);
-        device.install(install_target).done(null, function(err) {
-            console.error('ERROR: ' + err);
-            process.exit(2);
-        });
-     } else {
-        console.error('ERROR : argument \'' + args[2] + '\' not recognized.');
-        process.exit(2);
-     }
-} else {
-    device.install().done(null, function(err) {
-        console.error('ERROR: ' + err);
-        process.exit(2);
-    });
-}

http://git-wip-us.apache.org/repos/asf/cordova-lib/blob/677d2529/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/install-device.bat
----------------------------------------------------------------------
diff --git a/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/install-device.bat b/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/install-device.bat
deleted file mode 100644
index ac7214a..0000000
--- a/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/install-device.bat
+++ /dev/null
@@ -1,26 +0,0 @@
-:: 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.
-
-@ECHO OFF
-SET script_path="%~dp0install-device"
-IF EXIST %script_path% (
-        node "%script_path%" %*
-) ELSE (
-    ECHO.
-    ECHO ERROR: Could not find 'install-device' script in 'cordova\lib' folder, aborting...>&2
-    EXIT /B 1
-)
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-lib/blob/677d2529/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/install-emulator
----------------------------------------------------------------------
diff --git a/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/install-emulator b/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/install-emulator
deleted file mode 100755
index aa2a34f..0000000
--- a/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/install-emulator
+++ /dev/null
@@ -1,38 +0,0 @@
-#!/usr/bin/env node
-
-/*
-       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 emulator = require('./emulator'),
-    args     = process.argv;
-
-var install_target;
-if(args.length > 2) {
-    if (args[2].substring(0, 9) == '--target=') {
-        install_target = args[2].substring(9, args[2].length);
-     } else {
-        console.error('ERROR : argument \'' + args[2] + '\' not recognized.');
-        process.exit(2);
-     }
-}
-
-emulator.install(install_target).done(null, function(err) {
-    console.error('ERROR: ' + err);
-    process.exit(2);
-});

http://git-wip-us.apache.org/repos/asf/cordova-lib/blob/677d2529/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/install-emulator.bat
----------------------------------------------------------------------
diff --git a/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/install-emulator.bat b/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/install-emulator.bat
deleted file mode 100644
index 1ec6779..0000000
--- a/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/install-emulator.bat
+++ /dev/null
@@ -1,26 +0,0 @@
-:: 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.
-
-@ECHO OFF
-SET script_path="%~dp0install-emulator"
-IF EXIST %script_path% (
-        node "%script_path%" %*
-) ELSE (
-    ECHO.
-    ECHO ERROR: Could not find 'install-emulator' script in 'cordova\lib' folder, aborting...>&2
-    EXIT /B 1
-)
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-lib/blob/677d2529/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/list-devices
----------------------------------------------------------------------
diff --git a/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/list-devices b/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/list-devices
deleted file mode 100755
index fa84d7f..0000000
--- a/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/list-devices
+++ /dev/null
@@ -1,34 +0,0 @@
-#!/usr/bin/env node
-
-/*
-       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 devices = require('./device');
-
-// Usage support for when args are given
-require('../lib/check_reqs').check_android().then(function() {
-    devices.list().done(function(device_list) {
-        device_list && device_list.forEach(function(dev) {
-            console.log(dev);
-        });
-    }, function(err) {
-        console.error('ERROR: ' + err);
-        process.exit(2);
-    });
-});

http://git-wip-us.apache.org/repos/asf/cordova-lib/blob/677d2529/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/list-devices.bat
----------------------------------------------------------------------
diff --git a/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/list-devices.bat b/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/list-devices.bat
deleted file mode 100644
index c0bcdd9..0000000
--- a/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/list-devices.bat
+++ /dev/null
@@ -1,26 +0,0 @@
-:: 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.
-
-@ECHO OFF
-SET script_path="%~dp0list-devices"
-IF EXIST %script_path% (
-        node "%script_path%" %*
-) ELSE (
-    ECHO.
-    ECHO ERROR: Could not find 'list-devices' script in 'cordova\lib' folder, aborting...>&2
-    EXIT /B 1
-)
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-lib/blob/677d2529/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/list-emulator-images
----------------------------------------------------------------------
diff --git a/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/list-emulator-images b/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/list-emulator-images
deleted file mode 100755
index 03c827f..0000000
--- a/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/list-emulator-images
+++ /dev/null
@@ -1,34 +0,0 @@
-#!/usr/bin/env node
-
-/*
-       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 emulators = require('./emulator');
-
-// Usage support for when args are given
-require('../lib/check_reqs').check_android().then(function() {
-    emulators.list_images().done(function(emulator_list) {
-        emulator_list && emulator_list.forEach(function(emu) {
-            console.log(emu.name);
-        });
-    }, function(err) {
-        console.error('ERROR: ' + err);
-        process.exit(2);
-    });
-});

http://git-wip-us.apache.org/repos/asf/cordova-lib/blob/677d2529/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/list-emulator-images.bat
----------------------------------------------------------------------
diff --git a/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/list-emulator-images.bat b/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/list-emulator-images.bat
deleted file mode 100644
index 661cbf9..0000000
--- a/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/list-emulator-images.bat
+++ /dev/null
@@ -1,26 +0,0 @@
-:: 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.
-
-@ECHO OFF
-SET script_path="%~dp0list-emulator-images"
-IF EXIST %script_path% (
-        node "%script_path%" %*
-) ELSE (
-    ECHO. 
-    ECHO ERROR: Could not find 'list-emulator-images' script in 'cordova\lib' folder, aborting...>&2
-    EXIT /B 1
-)

http://git-wip-us.apache.org/repos/asf/cordova-lib/blob/677d2529/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/list-started-emulators
----------------------------------------------------------------------
diff --git a/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/list-started-emulators b/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/list-started-emulators
deleted file mode 100755
index a890dec..0000000
--- a/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/list-started-emulators
+++ /dev/null
@@ -1,34 +0,0 @@
-#!/usr/bin/env node
-
-/*
-       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 emulators = require('./emulator');
-
-// Usage support for when args are given
-require('../lib/check_reqs').check_android().then(function() {
-    emulators.list_started().done(function(emulator_list) {
-        emulator_list && emulator_list.forEach(function(emu) {
-            console.log(emu);
-        });
-    }, function(err) {
-        console.error('ERROR: ' + err);
-        process.exit(2);
-    });
-});

http://git-wip-us.apache.org/repos/asf/cordova-lib/blob/677d2529/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/list-started-emulators.bat
----------------------------------------------------------------------
diff --git a/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/list-started-emulators.bat b/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/list-started-emulators.bat
deleted file mode 100644
index a4e88f7..0000000
--- a/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/list-started-emulators.bat
+++ /dev/null
@@ -1,26 +0,0 @@
-:: 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.
-
-@ECHO OFF
-SET script_path="%~dp0list-started-emulators"
-IF EXIST %script_path% (
-        node "%script_path%" %*
-) ELSE (
-    ECHO.
-    ECHO ERROR: Could not find 'list-started-emulators' script in 'cordova\lib' folder, aborting...>&2
-    EXIT /B 1
-)
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-lib/blob/677d2529/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/log.js
----------------------------------------------------------------------
diff --git a/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/log.js b/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/log.js
deleted file mode 100644
index ebf836d..0000000
--- a/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/log.js
+++ /dev/null
@@ -1,56 +0,0 @@
-#!/usr/bin/env node
-
-/*
-       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'),
-    os  = require('os'),
-    Q     = require('q'),
-    child_process = require('child_process'),
-    ROOT  = path.join(__dirname, '..', '..');
-
-/*
- * Starts running logcat in the shell.
- * Returns a promise.
- */
-module.exports.run = function() {
-    var d = Q.defer();
-    var adb = child_process.spawn('adb', ['logcat'], {cwd: os.tmpdir()});
-
-    adb.stdout.on('data', function(data) {
-        var lines = data ? data.toString().split('\n') : [];
-        var out = lines.filter(function(x) { return x.indexOf('nativeGetEnabledTags') < 0; });
-        console.log(out.join('\n'));
-    });
-
-    adb.stderr.on('data', console.error);
-    adb.on('close', function(code) {
-        if (code > 0) {
-            d.reject('Failed to run logcat command.');
-        } else d.resolve();
-    });
-
-    return d.promise;
-};
-
-module.exports.help = function() {
-    console.log('Usage: ' + path.relative(process.cwd(), path.join(ROOT, 'cordova', 'log')));
-    console.log('Gives the logcat output on the command line.');
-    process.exit(0);
-};

http://git-wip-us.apache.org/repos/asf/cordova-lib/blob/677d2529/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/plugin-build.gradle
----------------------------------------------------------------------
diff --git a/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/plugin-build.gradle b/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/plugin-build.gradle
deleted file mode 100644
index d1c6336..0000000
--- a/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/plugin-build.gradle
+++ /dev/null
@@ -1,70 +0,0 @@
-/* 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.
-*/
-
-// GENERATED FILE! DO NOT EDIT!
-
-buildscript {
-    repositories {
-        mavenCentral()
-        jcenter()
-    }
-
-    // Switch the Android Gradle plugin version requirement depending on the
-    // installed version of Gradle. This dependency is documented at
-    // http://tools.android.com/tech-docs/new-build-system/version-compatibility
-    // and https://issues.apache.org/jira/browse/CB-8143
-    dependencies {
-        classpath 'com.android.tools.build:gradle:1.0.0+'
-    }
-}
-
-apply plugin: 'com.android.library'
-
-dependencies {
-    compile fileTree(dir: 'libs', include: '*.jar')
-    debugCompile project(path: ":CordovaLib", configuration: "debug")
-    releaseCompile project(path: ":CordovaLib", configuration: "release")
-}
-
-android {
-    compileSdkVersion cdvCompileSdkVersion
-    buildToolsVersion cdvBuildToolsVersion
-    publishNonDefault true
-
-    compileOptions {
-        sourceCompatibility JavaVersion.VERSION_1_6
-        targetCompatibility JavaVersion.VERSION_1_6
-    }
-
-    sourceSets {
-        main {
-            manifest.srcFile 'AndroidManifest.xml'
-            java.srcDirs = ['src']
-            resources.srcDirs = ['src']
-            aidl.srcDirs = ['src']
-            renderscript.srcDirs = ['src']
-            res.srcDirs = ['res']
-            assets.srcDirs = ['assets']
-            jniLibs.srcDirs = ['libs']
-        }
-    }
-}
-
-if (file('build-extras.gradle').exists()) {
-    apply from: 'build-extras.gradle'
-}

http://git-wip-us.apache.org/repos/asf/cordova-lib/blob/677d2529/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/pluginHandlers.js
----------------------------------------------------------------------
diff --git a/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/pluginHandlers.js b/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/pluginHandlers.js
deleted file mode 100644
index 5e745fd..0000000
--- a/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/pluginHandlers.js
+++ /dev/null
@@ -1,308 +0,0 @@
-/*
- *
- * Copyright 2013 Anis Kadri
- *
- * Licensed 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.
- *
-*/
-
-/* jshint unused: vars */
-
-var fs = require('fs');
-var path = require('path');
-var shell = require('shelljs');
-var events = require('cordova-common').events;
-var CordovaError = require('cordova-common').CordovaError;
-
-var handlers = {
-    'source-file':{
-        install:function(obj, plugin, project, options) {
-            if (!obj.src) throw new CordovaError(generateAttributeError('src', 'source-file', plugin.id));
-            if (!obj.targetDir) throw new CordovaError(generateAttributeError('target-dir', 'source-file', plugin.id));
-
-            var dest = path.join(obj.targetDir, path.basename(obj.src));
-
-            if(options && options.android_studio === true) {
-              dest = path.join('app/src/main/java', obj.targetDir.substring(4), path.basename(obj.src));
-            }
-
-            if (options && options.force) {
-                copyFile(plugin.dir, obj.src, project.projectDir, dest, !!(options && options.link));
-            } else {
-                copyNewFile(plugin.dir, obj.src, project.projectDir, dest, !!(options && options.link));
-            }
-        },
-        uninstall:function(obj, plugin, project, options) {
-            var dest = path.join(obj.targetDir, path.basename(obj.src));
-            
-            if(options && options.android_studio === true) {
-              dest = path.join('app/src/main/java', obj.targetDir.substring(4), path.basename(obj.src));
-            }
-
-            deleteJava(project.projectDir, dest);
-        }
-    },
-    'lib-file':{
-        install:function(obj, plugin, project, options) {
-            var dest = path.join('libs', path.basename(obj.src));
-            if(options && options.android_studio === true) {
-              dest = path.join('app/libs', path.basename(obj.src));
-            }
-            copyFile(plugin.dir, obj.src, project.projectDir, dest, !!(options && options.link));
-        },
-        uninstall:function(obj, plugin, project, options) {
-            var dest = path.join('libs', path.basename(obj.src));
-            if(options && options.android_studio === true) {
-              dest = path.join('app/libs', path.basename(obj.src));
-            }
-            removeFile(project.projectDir, dest);
-        }
-    },
-    'resource-file':{
-        install:function(obj, plugin, project, options) {
-            copyFile(plugin.dir, obj.src, project.projectDir, path.normalize(obj.target), !!(options && options.link));
-        },
-        uninstall:function(obj, plugin, project, options) {
-            removeFile(project.projectDir, path.normalize(obj.target));
-        }
-    },
-    'framework': {
-        install:function(obj, plugin, project, options) {
-            var src = obj.src;
-            if (!src) throw new CordovaError(generateAttributeError('src', 'framework', plugin.id));
-
-            events.emit('verbose', 'Installing Android library: ' + src);
-            var parentDir = obj.parent ? path.resolve(project.projectDir, obj.parent) : project.projectDir;
-            var subDir;
-
-            if (obj.custom) {
-                var subRelativeDir = project.getCustomSubprojectRelativeDir(plugin.id, src);
-                copyNewFile(plugin.dir, src, project.projectDir, subRelativeDir, !!(options && options.link));
-                subDir = path.resolve(project.projectDir, subRelativeDir);
-            } else {
-                obj.type = 'sys';
-                subDir = src;
-            }
-
-            if (obj.type == 'gradleReference') {
-                project.addGradleReference(parentDir, subDir);
-            } else if (obj.type == 'sys') {
-                project.addSystemLibrary(parentDir, subDir);
-            } else {
-                project.addSubProject(parentDir, subDir);
-            }
-        },
-        uninstall:function(obj, plugin, project, options) {
-            var src = obj.src;
-            if (!src) throw new CordovaError(generateAttributeError('src', 'framework', plugin.id));
-
-            events.emit('verbose', 'Uninstalling Android library: ' + src);
-            var parentDir = obj.parent ? path.resolve(project.projectDir, obj.parent) : project.projectDir;
-            var subDir;
-
-            if (obj.custom) {
-                var subRelativeDir = project.getCustomSubprojectRelativeDir(plugin.id, src);
-                removeFile(project.projectDir, subRelativeDir);
-                subDir = path.resolve(project.projectDir, subRelativeDir);
-                // If it's the last framework in the plugin, remove the parent directory.
-                var parDir = path.dirname(subDir);
-                if (fs.existsSync(parDir) && fs.readdirSync(parDir).length === 0) {
-                    fs.rmdirSync(parDir);
-                }
-            } else {
-                obj.type = 'sys';
-                subDir = src;
-            }
-
-            if (obj.type == 'gradleReference') {
-                project.removeGradleReference(parentDir, subDir);
-            } else if (obj.type == 'sys') {
-                project.removeSystemLibrary(parentDir, subDir);
-            } else {
-                project.removeSubProject(parentDir, subDir);
-            }
-        }
-    },
-    asset:{
-        install:function(obj, plugin, project, options) {
-            if (!obj.src) {
-                throw new CordovaError(generateAttributeError('src', 'asset', plugin.id));
-            }
-            if (!obj.target) {
-                throw new CordovaError(generateAttributeError('target', 'asset', plugin.id));
-            }
-
-            copyFile(plugin.dir, obj.src, project.www, obj.target);
-            if (options && options.usePlatformWww) {
-                // CB-11022 copy file to both directories if usePlatformWww is specified
-                copyFile(plugin.dir, obj.src, project.platformWww, obj.target);
-            }
-        },
-        uninstall:function(obj, plugin, project, options) {
-            var target = obj.target || obj.src;
-
-            if (!target) throw new CordovaError(generateAttributeError('target', 'asset', plugin.id));
-
-            removeFileF(path.resolve(project.www, target));
-            removeFileF(path.resolve(project.www, 'plugins', plugin.id));
-            if (options && options.usePlatformWww) {
-                // CB-11022 remove file from both directories if usePlatformWww is specified
-                removeFileF(path.resolve(project.platformWww, target));
-                removeFileF(path.resolve(project.platformWww, 'plugins', plugin.id));
-            }
-        }
-    },
-    'js-module': {
-        install: function (obj, plugin, project, options) {
-            // Copy the plugin's files into the www directory.
-            var moduleSource = path.resolve(plugin.dir, obj.src);
-            var moduleName = plugin.id + '.' + (obj.name || path.basename(obj.src, path.extname (obj.src)));
-
-            // Read in the file, prepend the cordova.define, and write it back out.
-            var scriptContent = fs.readFileSync(moduleSource, 'utf-8').replace(/^\ufeff/, ''); // Window BOM
-            if (moduleSource.match(/.*\.json$/)) {
-                scriptContent = 'module.exports = ' + scriptContent;
-            }
-            scriptContent = 'cordova.define("' + moduleName + '", function(require, exports, module) {\n' + scriptContent + '\n});\n';
-
-            var wwwDest = path.resolve(project.www, 'plugins', plugin.id, obj.src);
-            shell.mkdir('-p', path.dirname(wwwDest));
-            fs.writeFileSync(wwwDest, scriptContent, 'utf-8');
-
-            if (options && options.usePlatformWww) {
-                // CB-11022 copy file to both directories if usePlatformWww is specified
-                var platformWwwDest = path.resolve(project.platformWww, 'plugins', plugin.id, obj.src);
-                shell.mkdir('-p', path.dirname(platformWwwDest));
-                fs.writeFileSync(platformWwwDest, scriptContent, 'utf-8');
-            }
-        },
-        uninstall: function (obj, plugin, project, options) {
-            var pluginRelativePath = path.join('plugins', plugin.id, obj.src);
-            removeFileAndParents(project.www, pluginRelativePath);
-            if (options && options.usePlatformWww) {
-                // CB-11022 remove file from both directories if usePlatformWww is specified
-                removeFileAndParents(project.platformWww, pluginRelativePath);
-            }
-        }
-    }
-};
-
-module.exports.getInstaller = function (type) {
-    if (handlers[type] && handlers[type].install) {
-        return handlers[type].install;
-    }
-
-    events.emit('verbose', '<' + type + '> is not supported for android plugins');
-};
-
-module.exports.getUninstaller = function(type) {
-    if (handlers[type] && handlers[type].uninstall) {
-        return handlers[type].uninstall;
-    }
-
-    events.emit('verbose', '<' + type + '> is not supported for android plugins');
-};
-
-function copyFile (plugin_dir, src, project_dir, dest, link) {
-    src = path.resolve(plugin_dir, src);
-    if (!fs.existsSync(src)) throw new CordovaError('"' + src + '" not found!');
-
-    // check that src path is inside plugin directory
-    var real_path = fs.realpathSync(src);
-    var real_plugin_path = fs.realpathSync(plugin_dir);
-    if (real_path.indexOf(real_plugin_path) !== 0)
-        throw new CordovaError('File "' + src + '" is located outside the plugin directory "' + plugin_dir + '"');
-
-    dest = path.resolve(project_dir, dest);
-
-    // check that dest path is located in project directory
-    if (dest.indexOf(project_dir) !== 0)
-        throw new CordovaError('Destination "' + dest + '" for source file "' + src + '" is located outside the project');
-
-    shell.mkdir('-p', path.dirname(dest));
-    if (link) {
-        symlinkFileOrDirTree(src, dest);
-    } else if (fs.statSync(src).isDirectory()) {
-        // XXX shelljs decides to create a directory when -R|-r is used which sucks. http://goo.gl/nbsjq
-        shell.cp('-Rf', src+'/*', dest);
-    } else {
-        shell.cp('-f', src, dest);
-    }
-}
-
-// Same as copy file but throws error if target exists
-function copyNewFile (plugin_dir, src, project_dir, dest, link) {
-    var target_path = path.resolve(project_dir, dest);
-    if (fs.existsSync(target_path))
-        throw new CordovaError('"' + target_path + '" already exists!');
-
-    copyFile(plugin_dir, src, project_dir, dest, !!link);
-}
-
-function symlinkFileOrDirTree(src, dest) {
-    if (fs.existsSync(dest)) {
-        shell.rm('-Rf', dest);
-    }
-
-    if (fs.statSync(src).isDirectory()) {
-        shell.mkdir('-p', dest);
-        fs.readdirSync(src).forEach(function(entry) {
-            symlinkFileOrDirTree(path.join(src, entry), path.join(dest, entry));
-        });
-    }
-    else {
-        fs.symlinkSync(path.relative(fs.realpathSync(path.dirname(dest)), src), dest);
-    }
-}
-
-// checks if file exists and then deletes. Error if doesn't exist
-function removeFile (project_dir, src) {
-    var file = path.resolve(project_dir, src);
-    shell.rm('-Rf', file);
-}
-
-// deletes file/directory without checking
-function removeFileF (file) {
-    shell.rm('-Rf', file);
-}
-
-// Sometimes we want to remove some java, and prune any unnecessary empty directories
-function deleteJava (project_dir, destFile) {
-    removeFileAndParents(project_dir, destFile, 'src');
-}
-
-function removeFileAndParents (baseDir, destFile, stopper) {
-    stopper = stopper || '.';
-    var file = path.resolve(baseDir, destFile);
-    if (!fs.existsSync(file)) return;
-
-    removeFileF(file);
-
-    // check if directory is empty
-    var curDir = path.dirname(file);
-
-    while(curDir !== path.resolve(baseDir, stopper)) {
-        if(fs.existsSync(curDir) && fs.readdirSync(curDir).length === 0) {
-            fs.rmdirSync(curDir);
-            curDir = path.resolve(curDir, '..');
-        } else {
-            // directory not empty...do nothing
-            break;
-        }
-    }
-}
-
-function generateAttributeError(attribute, element, id) {
-    return 'Required attribute "' + attribute + '" not specified in <' + element + '> element from plugin: ' + id;
-}

http://git-wip-us.apache.org/repos/asf/cordova-lib/blob/677d2529/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/prepare.js
----------------------------------------------------------------------
diff --git a/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/prepare.js b/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/prepare.js
deleted file mode 100644
index 10a69ea..0000000
--- a/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/prepare.js
+++ /dev/null
@@ -1,431 +0,0 @@
-/**
-    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 Q = require('q');
-var fs = require('fs');
-var path = require('path');
-var shell = require('shelljs');
-var events = require('cordova-common').events;
-var AndroidManifest = require('./AndroidManifest');
-var xmlHelpers = require('cordova-common').xmlHelpers;
-var CordovaError = require('cordova-common').CordovaError;
-var ConfigParser = require('cordova-common').ConfigParser;
-var FileUpdater = require('cordova-common').FileUpdater;
-var PlatformJson = require('cordova-common').PlatformJson;
-var PlatformMunger = require('cordova-common').ConfigChanges.PlatformMunger;
-var PluginInfoProvider = require('cordova-common').PluginInfoProvider;
-
-module.exports.prepare = function (cordovaProject, options) {
-    var self = this;
-
-    var platformJson = PlatformJson.load(this.locations.root, this.platform);
-    var munger = new PlatformMunger(this.platform, this.locations.root, platformJson, new PluginInfoProvider());
-
-    this._config = updateConfigFilesFrom(cordovaProject.projectConfig, munger, this.locations);
-
-    // Update own www dir with project's www assets and plugins' assets and js-files
-    return Q.when(updateWww(cordovaProject, this.locations))
-    .then(function () {
-        // update project according to config.xml changes.
-        return updateProjectAccordingTo(self._config, self.locations);
-    })
-    .then(function () {
-        updateIcons(cordovaProject, path.relative(cordovaProject.root, self.locations.res));
-        updateSplashes(cordovaProject, path.relative(cordovaProject.root, self.locations.res));
-    })
-    .then(function () {
-        events.emit('verbose', 'Prepared android project successfully');
-    });
-};
-
-module.exports.clean = function (options) {
-    // A cordovaProject isn't passed into the clean() function, because it might have
-    // been called from the platform shell script rather than the CLI. Check for the
-    // noPrepare option passed in by the non-CLI clean script. If that's present, or if
-    // there's no config.xml found at the project root, then don't clean prepared files.
-    var projectRoot = path.resolve(this.root, '../..');
-    if ((options && options.noPrepare) || !fs.existsSync(this.locations.configXml) ||
-            !fs.existsSync(this.locations.configXml)) {
-        return Q();
-    }
-
-    var projectConfig = new ConfigParser(this.locations.configXml);
-
-    var self = this;
-    return Q().then(function () {
-        cleanWww(projectRoot, self.locations);
-        cleanIcons(projectRoot, projectConfig, path.relative(projectRoot, self.locations.res));
-        cleanSplashes(projectRoot, projectConfig, path.relative(projectRoot, self.locations.res));
-    });
-};
-
-/**
- * Updates config files in project based on app's config.xml and config munge,
- *   generated by plugins.
- *
- * @param   {ConfigParser}   sourceConfig  A project's configuration that will
- *   be merged into platform's config.xml
- * @param   {ConfigChanges}  configMunger  An initialized ConfigChanges instance
- *   for this platform.
- * @param   {Object}         locations     A map of locations for this platform
- *
- * @return  {ConfigParser}                 An instance of ConfigParser, that
- *   represents current project's configuration. When returned, the
- *   configuration is already dumped to appropriate config.xml file.
- */
-function updateConfigFilesFrom(sourceConfig, configMunger, locations) {
-    events.emit('verbose', 'Generating platform-specific config.xml from defaults for android at ' + locations.configXml);
-
-    // First cleanup current config and merge project's one into own
-    // Overwrite platform config.xml with defaults.xml.
-    shell.cp('-f', locations.defaultConfigXml, locations.configXml);
-
-    // Then apply config changes from global munge to all config files
-    // in project (including project's config)
-    configMunger.reapply_global_munge().save_all();
-
-    events.emit('verbose', 'Merging project\'s config.xml into platform-specific android config.xml');
-    // Merge changes from app's config.xml into platform's one
-    var config = new ConfigParser(locations.configXml);
-    xmlHelpers.mergeXml(sourceConfig.doc.getroot(),
-        config.doc.getroot(), 'android', /*clobber=*/true);
-
-    config.write();
-    return config;
-}
-
-/**
- * Logs all file operations via the verbose event stream, indented.
- */
-function logFileOp(message) {
-    events.emit('verbose', '  ' + message);
-}
-
-/**
- * Updates platform 'www' directory by replacing it with contents of
- *   'platform_www' and app www. Also copies project's overrides' folder into
- *   the platform 'www' folder
- *
- * @param   {Object}  cordovaProject    An object which describes cordova project.
- * @param   {Object}  destinations      An object that contains destination
- *   paths for www files.
- */
-function updateWww(cordovaProject, destinations) {
-    var sourceDirs = [
-        path.relative(cordovaProject.root, cordovaProject.locations.www),
-        path.relative(cordovaProject.root, destinations.platformWww)
-    ];
-
-    // If project contains 'merges' for our platform, use them as another overrides
-    var merges_path = path.join(cordovaProject.root, 'merges', 'android');
-    if (fs.existsSync(merges_path)) {
-        events.emit('verbose', 'Found "merges/android" folder. Copying its contents into the android project.');
-        sourceDirs.push(path.join('merges', 'android'));
-    }
-
-    var targetDir = path.relative(cordovaProject.root, destinations.www);
-    events.emit(
-        'verbose', 'Merging and updating files from [' + sourceDirs.join(', ') + '] to ' + targetDir);
-    FileUpdater.mergeAndUpdateDir(
-        sourceDirs, targetDir, { rootDir: cordovaProject.root }, logFileOp);
-}
-
-/**
- * Cleans all files from the platform 'www' directory.
- */
-function cleanWww(projectRoot, locations) {
-    var targetDir = path.relative(projectRoot, locations.www);
-    events.emit('verbose', 'Cleaning ' + targetDir);
-
-    // No source paths are specified, so mergeAndUpdateDir() will clear the target directory.
-    FileUpdater.mergeAndUpdateDir(
-        [], targetDir, { rootDir: projectRoot, all: true }, logFileOp);
-}
-
-/**
- * Updates project structure and AndroidManifest according to project's configuration.
- *
- * @param   {ConfigParser}  platformConfig  A project's configuration that will
- *   be used to update project
- * @param   {Object}  locations       A map of locations for this platform
- */
-function updateProjectAccordingTo(platformConfig, locations) {
-    // Update app name by editing res/values/strings.xml
-    var name = platformConfig.name();
-    var strings = xmlHelpers.parseElementtreeSync(locations.strings);
-    strings.find('string[@name="app_name"]').text = name.replace(/\'/g, '\\\'');
-    fs.writeFileSync(locations.strings, strings.write({indent: 4}), 'utf-8');
-    events.emit('verbose', 'Wrote out android application name "' + name + '" to ' + locations.strings);
-
-    // Java packages cannot support dashes
-    var pkg = (platformConfig.android_packageName() || platformConfig.packageName()).replace(/-/g, '_');
-
-    var manifest = new AndroidManifest(locations.manifest);
-    var orig_pkg = manifest.getPackageId();
-
-    manifest.getActivity()
-        .setOrientation(platformConfig.getPreference('orientation'))
-        .setLaunchMode(findAndroidLaunchModePreference(platformConfig));
-
-    manifest.setVersionName(platformConfig.version())
-        .setVersionCode(platformConfig.android_versionCode() || default_versionCode(platformConfig.version()))
-        .setPackageId(pkg)
-        .setMinSdkVersion(platformConfig.getPreference('android-minSdkVersion', 'android'))
-        .setMaxSdkVersion(platformConfig.getPreference('android-maxSdkVersion', 'android'))
-        .setTargetSdkVersion(platformConfig.getPreference('android-targetSdkVersion', 'android'))
-        .write();
-
-    var javaPattern = path.join(locations.root, 'src', orig_pkg.replace(/\./g, '/'), '*.java');
-    var java_files = shell.ls(javaPattern).filter(function(f) {
-        return shell.grep(/extends\s+CordovaActivity/g, f);
-    });
-
-    if (java_files.length === 0) {
-        throw new CordovaError('No Java files found that extend CordovaActivity.');
-    } else if(java_files.length > 1) {
-        events.emit('log', 'Multiple candidate Java files that extend CordovaActivity found. Guessing at the first one, ' + java_files[0]);
-    }
-
-    var destFile = path.join(locations.root, 'src', pkg.replace(/\./g, '/'), path.basename(java_files[0]));
-    shell.mkdir('-p', path.dirname(destFile));
-    shell.sed(/package [\w\.]*;/, 'package ' + pkg + ';', java_files[0]).to(destFile);
-    events.emit('verbose', 'Wrote out Android package name "' + pkg + '" to ' + destFile);
-
-    if (orig_pkg !== pkg) {
-        // If package was name changed we need to remove old java with main activity
-        shell.rm('-Rf',java_files[0]);
-        // remove any empty directories
-        var currentDir = path.dirname(java_files[0]);
-        var sourcesRoot = path.resolve(locations.root, 'src');
-        while(currentDir !== sourcesRoot) {
-            if(fs.existsSync(currentDir) && fs.readdirSync(currentDir).length === 0) {
-                fs.rmdirSync(currentDir);
-                currentDir = path.resolve(currentDir, '..');
-            } else {
-                break;
-            }
-        }
-    }
-}
-
-// Consturct the default value for versionCode as
-// PATCH + MINOR * 100 + MAJOR * 10000
-// see http://developer.android.com/tools/publishing/versioning.html
-function default_versionCode(version) {
-    var nums = version.split('-')[0].split('.');
-    var versionCode = 0;
-    if (+nums[0]) {
-        versionCode += +nums[0] * 10000;
-    }
-    if (+nums[1]) {
-        versionCode += +nums[1] * 100;
-    }
-    if (+nums[2]) {
-        versionCode += +nums[2];
-    }
-
-    events.emit('verbose', 'android-versionCode not found in config.xml. Generating a code based on version in config.xml (' + version + '): ' + versionCode);
-    return versionCode;
-}
-
-function getImageResourcePath(resourcesDir, type, density, name, sourceName) {
-    if (/\.9\.png$/.test(sourceName)) {
-        name = name.replace(/\.png$/, '.9.png');
-    }
-    var resourcePath = path.join(resourcesDir, (density ? type + '-' + density : type), name);
-    return resourcePath;
-}
-
-function updateSplashes(cordovaProject, platformResourcesDir) {
-    var resources = cordovaProject.projectConfig.getSplashScreens('android');
-
-    // if there are "splash" elements in config.xml
-    if (resources.length === 0) {
-        events.emit('verbose', 'This app does not have splash screens defined');
-        return;
-    }
-
-    var resourceMap = mapImageResources(cordovaProject.root, platformResourcesDir, 'drawable', 'screen.png');
-
-    var hadMdpi = false;
-    resources.forEach(function (resource) {
-        if (!resource.density) {
-            return;
-        }
-        if (resource.density == 'mdpi') {
-            hadMdpi = true;
-        }
-        var targetPath = getImageResourcePath(
-            platformResourcesDir, 'drawable', resource.density, 'screen.png', path.basename(resource.src));
-        resourceMap[targetPath] = resource.src;
-    });
-
-    // There's no "default" drawable, so assume default == mdpi.
-    if (!hadMdpi && resources.defaultResource) {
-        var targetPath = getImageResourcePath(
-            platformResourcesDir, 'drawable', 'mdpi', 'screen.png', path.basename(resources.defaultResource.src));
-        resourceMap[targetPath] = resources.defaultResource.src;
-    }
-
-    events.emit('verbose', 'Updating splash screens at ' + platformResourcesDir);
-    FileUpdater.updatePaths(
-        resourceMap, { rootDir: cordovaProject.root }, logFileOp);
-}
-
-function cleanSplashes(projectRoot, projectConfig, platformResourcesDir) {
-    var resources = projectConfig.getSplashScreens('android');
-    if (resources.length > 0) {
-        var resourceMap = mapImageResources(projectRoot, platformResourcesDir, 'drawable', 'screen.png');
-        events.emit('verbose', 'Cleaning splash screens at ' + platformResourcesDir);
-
-        // No source paths are specified in the map, so updatePaths() will delete the target files.
-        FileUpdater.updatePaths(
-            resourceMap, { rootDir: projectRoot, all: true }, logFileOp);
-    }
-}
-
-function updateIcons(cordovaProject, platformResourcesDir) {
-    var icons = cordovaProject.projectConfig.getIcons('android');
-
-    // if there are icon elements in config.xml
-    if (icons.length === 0) {
-        events.emit('verbose', 'This app does not have launcher icons defined');
-        return;
-    }
-
-    var resourceMap = mapImageResources(cordovaProject.root, platformResourcesDir, 'mipmap', 'icon.png');
-
-    var android_icons = {};
-    var default_icon;
-    // http://developer.android.com/design/style/iconography.html
-    var sizeToDensityMap = {
-        36: 'ldpi',
-        48: 'mdpi',
-        72: 'hdpi',
-        96: 'xhdpi',
-        144: 'xxhdpi',
-        192: 'xxxhdpi'
-    };
-    // find the best matching icon for a given density or size
-    // @output android_icons
-    var parseIcon = function(icon, icon_size) {
-        // do I have a platform icon for that density already
-        var density = icon.density || sizeToDensityMap[icon_size];
-        if (!density) {
-            // invalid icon defition ( or unsupported size)
-            return;
-        }
-        var previous = android_icons[density];
-        if (previous && previous.platform) {
-            return;
-        }
-        android_icons[density] = icon;
-    };
-
-    // iterate over all icon elements to find the default icon and call parseIcon
-    for (var i=0; i<icons.length; i++) {
-        var icon = icons[i];
-        var size = icon.width;
-        if (!size) {
-            size = icon.height;
-        }
-        if (!size && !icon.density) {
-            if (default_icon) {
-                events.emit('verbose', 'Found extra default icon: ' + icon.src + ' (ignoring in favor of ' + default_icon.src + ')');
-            } else {
-                default_icon = icon;
-            }
-        } else {
-            parseIcon(icon, size);
-        }
-    }
-
-    // The source paths for icons and splashes are relative to
-    // project's config.xml location, so we use it as base path.
-    for (var density in android_icons) {
-        var targetPath = getImageResourcePath(
-            platformResourcesDir, 'mipmap', density, 'icon.png', path.basename(android_icons[density].src));
-        resourceMap[targetPath] = android_icons[density].src;
-    }
-
-    // There's no "default" drawable, so assume default == mdpi.
-    if (default_icon && !android_icons.mdpi) {
-        var defaultTargetPath = getImageResourcePath(
-            platformResourcesDir, 'mipmap', 'mdpi', 'icon.png', path.basename(default_icon.src));
-        resourceMap[defaultTargetPath] = default_icon.src;
-    }
-
-    events.emit('verbose', 'Updating icons at ' + platformResourcesDir);
-    FileUpdater.updatePaths(
-        resourceMap, { rootDir: cordovaProject.root }, logFileOp);
-}
-
-function cleanIcons(projectRoot, projectConfig, platformResourcesDir) {
-    var icons = projectConfig.getIcons('android');
-    if (icons.length > 0) {
-        var resourceMap = mapImageResources(projectRoot, platformResourcesDir, 'mipmap', 'icon.png');
-        events.emit('verbose', 'Cleaning icons at ' + platformResourcesDir);
-
-        // No source paths are specified in the map, so updatePaths() will delete the target files.
-        FileUpdater.updatePaths(
-            resourceMap, { rootDir: projectRoot, all: true }, logFileOp);
-    }
-}
-
-/**
- * Gets a map containing resources of a specified name from all drawable folders in a directory.
- */
-function mapImageResources(rootDir, subDir, type, resourceName) {
-    var pathMap = {};
-    shell.ls(path.join(rootDir, subDir, type + '-*'))
-    .forEach(function (drawableFolder) {
-        var imagePath = path.join(subDir, path.basename(drawableFolder), resourceName);
-        pathMap[imagePath] = null;
-    });
-    return pathMap;
-}
-
-/**
- * Gets and validates 'AndroidLaunchMode' prepference from config.xml. Returns
- *   preference value and warns if it doesn't seems to be valid
- *
- * @param   {ConfigParser}  platformConfig  A configParser instance for
- *   platform.
- *
- * @return  {String}                  Preference's value from config.xml or
- *   default value, if there is no such preference. The default value is
- *   'singleTop'
- */
-function findAndroidLaunchModePreference(platformConfig) {
-    var launchMode = platformConfig.getPreference('AndroidLaunchMode');
-    if (!launchMode) {
-        // Return a default value
-        return 'singleTop';
-    }
-
-    var expectedValues = ['standard', 'singleTop', 'singleTask', 'singleInstance'];
-    var valid = expectedValues.indexOf(launchMode) >= 0;
-    if (!valid) {
-        // Note: warn, but leave the launch mode as developer wanted, in case the list of options changes in the future
-        events.emit('warn', 'Unrecognized value for AndroidLaunchMode preference: ' +
-            launchMode + '. Expected values are: ' + expectedValues.join(', '));
-    }
-
-    return launchMode;
-}

http://git-wip-us.apache.org/repos/asf/cordova-lib/blob/677d2529/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/retry.js
----------------------------------------------------------------------
diff --git a/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/retry.js b/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/retry.js
deleted file mode 100644
index 3cb4927..0000000
--- a/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/retry.js
+++ /dev/null
@@ -1,68 +0,0 @@
-#!/usr/bin/env node
-
-/*
-    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.
-*/
-
-/* jshint node: true */
-
-'use strict';
-
-var events = require('cordova-common').events;
-
-/*
- * Retry a promise-returning function a number of times, propagating its
- * results on success or throwing its error on a failed final attempt.
- *
- * @arg {Number}   attemts_left    - The number of times to retry the passed call.
- * @arg {Function} promiseFunction - A function that returns a promise.
- * @arg {...}                      - Arguments to pass to promiseFunction.
- *
- * @returns {Promise}
- */
-module.exports.retryPromise = function (attemts_left, promiseFunction) {
-
-    // NOTE:
-    //      get all trailing arguments, by skipping the first two (attemts_left and
-    //      promiseFunction) because they shouldn't get passed to promiseFunction
-    var promiseFunctionArguments = Array.prototype.slice.call(arguments, 2);
-
-    return promiseFunction.apply(undefined, promiseFunctionArguments).then(
-
-        // on success pass results through
-        function onFulfilled(value) {
-            return value;
-        },
-
-        // on rejection either retry, or throw the error
-        function onRejected(error) {
-
-            attemts_left -= 1;
-
-            if (attemts_left < 1) {
-                throw error;
-            }
-
-            events.emit('verbose', 'A retried call failed. Retrying ' + attemts_left + ' more time(s).');
-
-            // retry call self again with the same arguments, except attemts_left is now lower
-            var fullArguments = [attemts_left, promiseFunction].concat(promiseFunctionArguments);
-            return module.exports.retryPromise.apply(undefined, fullArguments);
-        }
-    );
-};


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cordova.apache.org
For additional commands, e-mail: commits-help@cordova.apache.org