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/02 00:09:22 UTC
[62/68] [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/e0c3fee6/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/Api.js
----------------------------------------------------------------------
diff --git a/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/Api.js b/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/Api.js
deleted file mode 100644
index 8e4711c..0000000
--- a/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/Api.js
+++ /dev/null
@@ -1,415 +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 path = require('path');
-var Q = require('q');
-
-var AndroidProject = require('./lib/AndroidProject');
-var AndroidStudio = require('./lib/AndroidStudio');
-var PluginManager = require('cordova-common').PluginManager;
-
-var CordovaLogger = require('cordova-common').CordovaLogger;
-var selfEvents = require('cordova-common').events;
-
-var PLATFORM = 'android';
-
-
-function setupEvents(externalEventEmitter) {
- if (externalEventEmitter) {
- // This will make the platform internal events visible outside
- selfEvents.forwardEventsTo(externalEventEmitter);
- return externalEventEmitter;
- }
-
- // There is no logger if external emitter is not present,
- // so attach a console logger
- CordovaLogger.get().subscribe(selfEvents);
- return selfEvents;
-}
-
-
-/**
- * Class, that acts as abstraction over particular platform. Encapsulates the
- * platform's properties and methods.
- *
- * Platform that implements own PlatformApi instance _should implement all
- * prototype methods_ of this class to be fully compatible with cordova-lib.
- *
- * The PlatformApi instance also should define the following field:
- *
- * * platform: String that defines a platform name.
- */
-function Api(platform, platformRootDir, events) {
- this.platform = PLATFORM;
- this.root = path.resolve(__dirname, '..');
-
- setupEvents(events);
-
- var self = this;
-
- this.locations = {
- root: self.root,
- www: path.join(self.root, 'assets/www'),
- res: path.join(self.root, 'res'),
- platformWww: path.join(self.root, 'platform_www'),
- configXml: path.join(self.root, 'res/xml/config.xml'),
- defaultConfigXml: path.join(self.root, 'cordova/defaults.xml'),
- strings: path.join(self.root, 'res/values/strings.xml'),
- manifest: path.join(self.root, 'AndroidManifest.xml'),
- build: path.join(self.root, 'build'),
- // NOTE: Due to platformApi spec we need to return relative paths here
- cordovaJs: 'bin/templates/project/assets/www/cordova.js',
- cordovaJsSrc: 'cordova-js-src'
- };
-
- // XXX Override some locations for Android Studio projects
- if(AndroidStudio.isAndroidStudioProject(self.root) === true) {
- selfEvents.emit('log', 'Android Studio project detected');
- this.android_studio = true;
- this.locations.configXml = path.join(self.root, 'app/src/main/res/xml/config.xml');
- this.locations.strings = path.join(self.root, 'app/src/main/res/xml/strings.xml');
- this.locations.manifest = path.join(self.root, 'app/src/main/AndroidManifest.xml');
- this.locations.www = path.join(self.root, 'app/src/main/assets/www');
- this.locations.res = path.join(self.root, 'app/src/main/res');
- }
-}
-
-/**
- * Installs platform to specified directory and creates a platform project.
- *
- * @param {String} destination Destination directory, where insatll platform to
- * @param {ConfigParser} [config] ConfgiParser instance, used to retrieve
- * project creation options, such as package id and project name.
- * @param {Object} [options] An options object. The most common options are:
- * @param {String} [options.customTemplate] A path to custom template, that
- * should override the default one from platform.
- * @param {Boolean} [options.link] Flag that indicates that platform's
- * sources will be linked to installed platform instead of copying.
- * @param {EventEmitter} [events] An EventEmitter instance that will be used for
- * logging purposes. If no EventEmitter provided, all events will be logged to
- * console
- *
- * @return {Promise<PlatformApi>} Promise either fulfilled with PlatformApi
- * instance or rejected with CordovaError.
- */
-Api.createPlatform = function (destination, config, options, events) {
- events = setupEvents(events);
- var result;
- try {
- result = require('../../lib/create')
- .create(destination, config, options, events)
- .then(function (destination) {
- var PlatformApi = require(path.resolve(destination, 'cordova/Api'));
- return new PlatformApi(PLATFORM, destination, events);
- });
- }
- catch (e) {
- events.emit('error','createPlatform is not callable from the android project API.');
- throw(e);
- }
- return result;
-};
-
-/**
- * Updates already installed platform.
- *
- * @param {String} destination Destination directory, where platform installed
- * @param {Object} [options] An options object. The most common options are:
- * @param {String} [options.customTemplate] A path to custom template, that
- * should override the default one from platform.
- * @param {Boolean} [options.link] Flag that indicates that platform's
- * sources will be linked to installed platform instead of copying.
- * @param {EventEmitter} [events] An EventEmitter instance that will be used for
- * logging purposes. If no EventEmitter provided, all events will be logged to
- * console
- *
- * @return {Promise<PlatformApi>} Promise either fulfilled with PlatformApi
- * instance or rejected with CordovaError.
- */
-Api.updatePlatform = function (destination, options, events) {
- events = setupEvents(events);
- var result;
- try {
- result = require('../../lib/create')
- .update(destination, options, events)
- .then(function (destination) {
- var PlatformApi = require(path.resolve(destination, 'cordova/Api'));
- return new PlatformApi('android', destination, events);
- });
- }
- catch (e) {
- events.emit('error','updatePlatform is not callable from the android project API, you will need to do this manually.');
- throw(e);
- }
- return result;
-};
-
-/**
- * Gets a CordovaPlatform object, that represents the platform structure.
- *
- * @return {CordovaPlatform} A structure that contains the description of
- * platform's file structure and other properties of platform.
- */
-Api.prototype.getPlatformInfo = function () {
- var result = {};
- result.locations = this.locations;
- result.root = this.root;
- result.name = this.platform;
- result.version = require('./version');
- result.projectConfig = this._config;
-
- return result;
-};
-
-/**
- * Updates installed platform with provided www assets and new app
- * configuration. This method is required for CLI workflow and will be called
- * each time before build, so the changes, made to app configuration and www
- * code, will be applied to platform.
- *
- * @param {CordovaProject} cordovaProject A CordovaProject instance, that defines a
- * project structure and configuration, that should be applied to platform
- * (contains project's www location and ConfigParser instance for project's
- * config).
- *
- * @return {Promise} Return a promise either fulfilled, or rejected with
- * CordovaError instance.
- */
-Api.prototype.prepare = function (cordovaProject, prepareOptions) {
- return require('./lib/prepare').prepare.call(this, cordovaProject, prepareOptions);
-};
-
-/**
- * Installs a new plugin into platform. This method only copies non-www files
- * (sources, libs, etc.) to platform. It also doesn't resolves the
- * dependencies of plugin. Both of handling of www files, such as assets and
- * js-files and resolving dependencies are the responsibility of caller.
- *
- * @param {PluginInfo} plugin A PluginInfo instance that represents plugin
- * that will be installed.
- * @param {Object} installOptions An options object. Possible options below:
- * @param {Boolean} installOptions.link: Flag that specifies that plugin
- * sources will be symlinked to app's directory instead of copying (if
- * possible).
- * @param {Object} installOptions.variables An object that represents
- * variables that will be used to install plugin. See more details on plugin
- * variables in documentation:
- * https://cordova.apache.org/docs/en/4.0.0/plugin_ref_spec.md.html
- *
- * @return {Promise} Return a promise either fulfilled, or rejected with
- * CordovaError instance.
- */
-Api.prototype.addPlugin = function (plugin, installOptions) {
- var project = AndroidProject.getProjectFile(this.root);
- var self = this;
-
- installOptions = installOptions || {};
- installOptions.variables = installOptions.variables || {};
- // Add PACKAGE_NAME variable into vars
- if (!installOptions.variables.PACKAGE_NAME) {
- installOptions.variables.PACKAGE_NAME = project.getPackageName();
- }
-
- if(this.android_studio === true) {
- installOptions.android_studio = true;
- }
-
- return Q()
- .then(function () {
- //CB-11964: Do a clean when installing the plugin code to get around
- //the Gradle bug introduced by the Android Gradle Plugin Version 2.2
- //TODO: Delete when the next version of Android Gradle plugin comes out
-
- // Since clean doesn't just clean the build, it also wipes out www, we need
- // to pass additional options.
-
- // Do some basic argument parsing
- var opts = {};
-
- // Skip cleaning prepared files when not invoking via cordova CLI.
- opts.noPrepare = true;
-
- if(!AndroidStudio.isAndroidStudioProject(self.root) && !project.isClean()) {
- return self.clean(opts);
- }
- })
- .then(function () {
- return PluginManager.get(self.platform, self.locations, project)
- .addPlugin(plugin, installOptions);
- })
- .then(function () {
- if (plugin.getFrameworks(this.platform).length === 0) return;
-
- selfEvents.emit('verbose', 'Updating build files since android plugin contained <framework>');
- require('./lib/builders/builders').getBuilder('gradle').prepBuildFiles();
- }.bind(this))
- // CB-11022 Return truthy value to prevent running prepare after
- .thenResolve(true);
-};
-
-/**
- * Removes an installed plugin from platform.
- *
- * Since method accepts PluginInfo instance as input parameter instead of plugin
- * id, caller shoud take care of managing/storing PluginInfo instances for
- * future uninstalls.
- *
- * @param {PluginInfo} plugin A PluginInfo instance that represents plugin
- * that will be installed.
- *
- * @return {Promise} Return a promise either fulfilled, or rejected with
- * CordovaError instance.
- */
-Api.prototype.removePlugin = function (plugin, uninstallOptions) {
- var project = AndroidProject.getProjectFile(this.root);
-
- if(uninstallOptions && uninstallOptions.usePlatformWww === true && this.android_studio === true) {
- uninstallOptions.usePlatformWww = false;
- uninstallOptions.android_studio = true;
- }
-
- return PluginManager.get(this.platform, this.locations, project)
- .removePlugin(plugin, uninstallOptions)
- .then(function () {
- if (plugin.getFrameworks(this.platform).length === 0) return;
-
- selfEvents.emit('verbose', 'Updating build files since android plugin contained <framework>');
- require('./lib/builders/builders').getBuilder('gradle').prepBuildFiles();
- }.bind(this))
- // CB-11022 Return truthy value to prevent running prepare after
- .thenResolve(true);
-};
-
-/**
- * Builds an application package for current platform.
- *
- * @param {Object} buildOptions A build options. This object's structure is
- * highly depends on platform's specific. The most common options are:
- * @param {Boolean} buildOptions.debug Indicates that packages should be
- * built with debug configuration. This is set to true by default unless the
- * 'release' option is not specified.
- * @param {Boolean} buildOptions.release Indicates that packages should be
- * built with release configuration. If not set to true, debug configuration
- * will be used.
- * @param {Boolean} buildOptions.device Specifies that built app is intended
- * to run on device
- * @param {Boolean} buildOptions.emulator: Specifies that built app is
- * intended to run on emulator
- * @param {String} buildOptions.target Specifies the device id that will be
- * used to run built application.
- * @param {Boolean} buildOptions.nobuild Indicates that this should be a
- * dry-run call, so no build artifacts will be produced.
- * @param {String[]} buildOptions.archs Specifies chip architectures which
- * app packages should be built for. List of valid architectures is depends on
- * platform.
- * @param {String} buildOptions.buildConfig The path to build configuration
- * file. The format of this file is depends on platform.
- * @param {String[]} buildOptions.argv Raw array of command-line arguments,
- * passed to `build` command. The purpose of this property is to pass a
- * platform-specific arguments, and eventually let platform define own
- * arguments processing logic.
- *
- * @return {Promise<Object[]>} A promise either fulfilled with an array of build
- * artifacts (application packages) if package was built successfully,
- * or rejected with CordovaError. The resultant build artifact objects is not
- * strictly typed and may conatin arbitrary set of fields as in sample below.
- *
- * {
- * architecture: 'x86',
- * buildType: 'debug',
- * path: '/path/to/build',
- * type: 'app'
- * }
- *
- * The return value in most cases will contain only one item but in some cases
- * there could be multiple items in output array, e.g. when multiple
- * arhcitectures is specified.
- */
-Api.prototype.build = function (buildOptions) {
- var self = this;
- return require('./lib/check_reqs').run()
- .then(function () {
- return require('./lib/build').run.call(self, buildOptions);
- })
- .then(function (buildResults) {
- // Cast build result to array of build artifacts
- return buildResults.apkPaths.map(function (apkPath) {
- return {
- buildType: buildResults.buildType,
- buildMethod: buildResults.buildMethod,
- path: apkPath,
- type: 'apk'
- };
- });
- });
-};
-
-/**
- * Builds an application package for current platform and runs it on
- * specified/default device. If no 'device'/'emulator'/'target' options are
- * specified, then tries to run app on default device if connected, otherwise
- * runs the app on emulator.
- *
- * @param {Object} runOptions An options object. The structure is the same
- * as for build options.
- *
- * @return {Promise} A promise either fulfilled if package was built and ran
- * successfully, or rejected with CordovaError.
- */
-Api.prototype.run = function(runOptions) {
- var self = this;
- return require('./lib/check_reqs').run()
- .then(function () {
- return require('./lib/run').run.call(self, runOptions);
- });
-};
-
-/**
- * Cleans out the build artifacts from platform's directory, and also
- * cleans out the platform www directory if called without options specified.
- *
- * @return {Promise} Return a promise either fulfilled, or rejected with
- * CordovaError.
- */
-Api.prototype.clean = function(cleanOptions) {
- var self = this;
- return require('./lib/check_reqs').run()
- .then(function () {
- return require('./lib/build').runClean.call(self, cleanOptions);
- })
- .then(function () {
- return require('./lib/prepare').clean.call(self, cleanOptions);
- });
-};
-
-
-
-/**
- * Performs a requirements check for current platform. Each platform defines its
- * own set of requirements, which should be resolved before platform can be
- * built successfully.
- *
- * @return {Promise<Requirement[]>} Promise, resolved with set of Requirement
- * objects for current platform.
- */
-Api.prototype.requirements = function() {
- return require('./lib/check_reqs').check_all();
-};
-
-module.exports = Api;
http://git-wip-us.apache.org/repos/asf/cordova-lib/blob/e0c3fee6/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/build
----------------------------------------------------------------------
diff --git a/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/build b/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/build
deleted file mode 100755
index 222e84a..0000000
--- a/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/build
+++ /dev/null
@@ -1,50 +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 args = process.argv;
-var Api = require('./Api');
-var nopt = require('nopt');
-var path = require('path');
-
-// Support basic help commands
-if(['--help', '/?', '-h', 'help', '-help', '/help'].indexOf(process.argv[2]) >= 0)
- require('./lib/build').help();
-
-// Do some basic argument parsing
-var buildOpts = nopt({
- 'verbose' : Boolean,
- 'silent' : Boolean,
- 'debug' : Boolean,
- 'release' : Boolean,
- 'nobuild': Boolean,
- 'buildConfig' : path
-}, { 'd' : '--verbose' });
-
-// Make buildOptions compatible with PlatformApi build method spec
-buildOpts.argv = buildOpts.argv.original;
-
-require('./loggingHelper').adjustLoggerLevel(buildOpts);
-
-new Api().build(buildOpts)
-.catch(function(err) {
- console.error(err.stack);
- process.exit(2);
-});
http://git-wip-us.apache.org/repos/asf/cordova-lib/blob/e0c3fee6/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/build.bat
----------------------------------------------------------------------
diff --git a/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/build.bat b/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/build.bat
deleted file mode 100644
index 46e966a..0000000
--- a/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/build.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="%~dp0build"
-IF EXIST %script_path% (
- node %script_path% %*
-) ELSE (
- ECHO.
- ECHO ERROR: Could not find 'build' script in 'cordova' folder, aborting...>&2
- EXIT /B 1
-)
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cordova-lib/blob/e0c3fee6/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/clean
----------------------------------------------------------------------
diff --git a/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/clean b/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/clean
deleted file mode 100755
index 22065cc..0000000
--- a/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/clean
+++ /dev/null
@@ -1,51 +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 Api = require('./Api');
-var path = require('path');
-var nopt = require('nopt');
-
-// Support basic help commands
-if(['--help', '/?', '-h', 'help', '-help', '/help'].indexOf(process.argv[2]) >= 0) {
- console.log('Usage: ' + path.relative(process.cwd(), process.argv[1]));
- console.log('Cleans the project directory.');
- process.exit(0);
-}
-
-// Do some basic argument parsing
-var opts = nopt({
- 'verbose' : Boolean,
- 'silent' : Boolean
-}, { 'd' : '--verbose' });
-
-// Make buildOptions compatible with PlatformApi clean method spec
-opts.argv = opts.argv.original;
-
-// Skip cleaning prepared files when not invoking via cordova CLI.
-opts.noPrepare = true;
-
-require('./loggingHelper').adjustLoggerLevel(opts);
-
-new Api().clean(opts)
-.catch(function(err) {
- console.error(err.stack);
- process.exit(2);
-});
http://git-wip-us.apache.org/repos/asf/cordova-lib/blob/e0c3fee6/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/clean.bat
----------------------------------------------------------------------
diff --git a/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/clean.bat b/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/clean.bat
deleted file mode 100644
index 445ef6e..0000000
--- a/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/clean.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="%~dp0clean"
-IF EXIST %script_path% (
- node %script_path% %*
-) ELSE (
- ECHO.
- ECHO ERROR: Could not find 'clean' script in 'cordova' folder, aborting...>&2
- EXIT /B 1
-)
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cordova-lib/blob/e0c3fee6/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/defaults.xml
----------------------------------------------------------------------
diff --git a/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/defaults.xml b/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/defaults.xml
deleted file mode 100644
index 5286ab9..0000000
--- a/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/defaults.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- 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.
--->
-<widget xmlns = "http://www.w3.org/ns/widgets"
- id = "io.cordova.helloCordova"
- version = "2.0.0">
-
- <!-- Preferences for Android -->
- <preference name="loglevel" value="DEBUG" />
-</widget>
http://git-wip-us.apache.org/repos/asf/cordova-lib/blob/e0c3fee6/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/Adb.js
----------------------------------------------------------------------
diff --git a/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/Adb.js b/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/Adb.js
deleted file mode 100644
index 84ae707..0000000
--- a/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/Adb.js
+++ /dev/null
@@ -1,105 +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 os = require('os');
-var events = require('cordova-common').events;
-var spawn = require('cordova-common').superspawn.spawn;
-var CordovaError = require('cordova-common').CordovaError;
-
-var Adb = {};
-
-function isDevice(line) {
- return line.match(/\w+\tdevice/) && !line.match(/emulator/);
-}
-
-function isEmulator(line) {
- return line.match(/device/) && line.match(/emulator/);
-}
-
-/**
- * Lists available/connected devices and emulators
- *
- * @param {Object} opts Various options
- * @param {Boolean} opts.emulators Specifies whether this method returns
- * emulators only
- *
- * @return {Promise<String[]>} list of available/connected
- * devices/emulators
- */
-Adb.devices = function (opts) {
- return spawn('adb', ['devices'], {cwd: os.tmpdir()})
- .then(function(output) {
- return output.split('\n').filter(function (line) {
- // Filter out either real devices or emulators, depending on options
- return (line && opts && opts.emulators) ? isEmulator(line) : isDevice(line);
- }).map(function (line) {
- return line.replace(/\tdevice/, '').replace('\r', '');
- });
- });
-};
-
-Adb.install = function (target, packagePath, opts) {
- events.emit('verbose', 'Installing apk ' + packagePath + ' on target ' + target + '...');
- var args = ['-s', target, 'install'];
- if (opts && opts.replace) args.push('-r');
- return spawn('adb', args.concat(packagePath), {cwd: os.tmpdir()})
- .then(function(output) {
- // 'adb install' seems to always returns no error, even if installation fails
- // so we catching output to detect installation failure
- if (output.match(/Failure/)) {
- if (output.match(/INSTALL_PARSE_FAILED_NO_CERTIFICATES/)) {
- output += '\n\n' + 'Sign the build using \'-- --keystore\' or \'--buildConfig\'' +
- ' or sign and deploy the unsigned apk manually using Android tools.';
- } else if (output.match(/INSTALL_FAILED_VERSION_DOWNGRADE/)) {
- output += '\n\n' + 'You\'re trying to install apk with a lower versionCode that is already installed.' +
- '\nEither uninstall an app or increment the versionCode.';
- }
-
- return Q.reject(new CordovaError('Failed to install apk to device: ' + output));
- }
- });
-};
-
-Adb.uninstall = function (target, packageId) {
- events.emit('verbose', 'Uninstalling package ' + packageId + ' from target ' + target + '...');
- return spawn('adb', ['-s', target, 'uninstall', packageId], {cwd: os.tmpdir()});
-};
-
-Adb.shell = function (target, shellCommand) {
- events.emit('verbose', 'Running adb shell command "' + shellCommand + '" on target ' + target + '...');
- var args = ['-s', target, 'shell'];
- shellCommand = shellCommand.split(/\s+/);
- return spawn('adb', args.concat(shellCommand), {cwd: os.tmpdir()})
- .catch(function (output) {
- return Q.reject(new CordovaError('Failed to execute shell command "' +
- shellCommand + '"" on device: ' + output));
- });
-};
-
-Adb.start = function (target, activityName) {
- events.emit('verbose', 'Starting application "' + activityName + '" on target ' + target + '...');
- return Adb.shell(target, 'am start -W -a android.intent.action.MAIN -n' + activityName)
- .catch(function (output) {
- return Q.reject(new CordovaError('Failed to start application "' +
- activityName + '"" on device: ' + output));
- });
-};
-
-module.exports = Adb;
http://git-wip-us.apache.org/repos/asf/cordova-lib/blob/e0c3fee6/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/AndroidManifest.js
----------------------------------------------------------------------
diff --git a/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/AndroidManifest.js b/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/AndroidManifest.js
deleted file mode 100644
index 8248f59..0000000
--- a/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/AndroidManifest.js
+++ /dev/null
@@ -1,161 +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 fs = require('fs');
-var et = require('elementtree');
-var xml= require('cordova-common').xmlHelpers;
-
-var DEFAULT_ORIENTATION = 'default';
-
-/** Wraps an AndroidManifest file */
-function AndroidManifest(path) {
- this.path = path;
- this.doc = xml.parseElementtreeSync(path);
- if (this.doc.getroot().tag !== 'manifest') {
- throw new Error('AndroidManifest at ' + path + ' has incorrect root node name (expected "manifest")');
- }
-}
-
-AndroidManifest.prototype.getVersionName = function() {
- return this.doc.getroot().attrib['android:versionName'];
-};
-
-AndroidManifest.prototype.setVersionName = function(versionName) {
- this.doc.getroot().attrib['android:versionName'] = versionName;
- return this;
-};
-
-AndroidManifest.prototype.getVersionCode = function() {
- return this.doc.getroot().attrib['android:versionCode'];
-};
-
-AndroidManifest.prototype.setVersionCode = function(versionCode) {
- this.doc.getroot().attrib['android:versionCode'] = versionCode;
- return this;
-};
-
-AndroidManifest.prototype.getPackageId = function() {
- /*jshint -W069 */
- return this.doc.getroot().attrib['package'];
- /*jshint +W069 */
-};
-
-AndroidManifest.prototype.setPackageId = function(pkgId) {
- /*jshint -W069 */
- this.doc.getroot().attrib['package'] = pkgId;
- /*jshint +W069 */
- return this;
-};
-
-AndroidManifest.prototype.getActivity = function() {
- var activity = this.doc.getroot().find('./application/activity');
- return {
- getName: function () {
- return activity.attrib['android:name'];
- },
- setName: function (name) {
- if (!name) {
- delete activity.attrib['android:name'];
- } else {
- activity.attrib['android:name'] = name;
- }
- return this;
- },
- getOrientation: function () {
- return activity.attrib['android:screenOrientation'];
- },
- setOrientation: function (orientation) {
- if (!orientation || orientation.toLowerCase() === DEFAULT_ORIENTATION) {
- delete activity.attrib['android:screenOrientation'];
- } else {
- activity.attrib['android:screenOrientation'] = orientation;
- }
- return this;
- },
- getLaunchMode: function () {
- return activity.attrib['android:launchMode'];
- },
- setLaunchMode: function (launchMode) {
- if (!launchMode) {
- delete activity.attrib['android:launchMode'];
- } else {
- activity.attrib['android:launchMode'] = launchMode;
- }
- return this;
- }
- };
-};
-
-['minSdkVersion', 'maxSdkVersion', 'targetSdkVersion']
-.forEach(function(sdkPrefName) {
- // Copy variable reference to avoid closure issues
- var prefName = sdkPrefName;
-
- AndroidManifest.prototype['get' + capitalize(prefName)] = function() {
- var usesSdk = this.doc.getroot().find('./uses-sdk');
- return usesSdk && usesSdk.attrib['android:' + prefName];
- };
-
- AndroidManifest.prototype['set' + capitalize(prefName)] = function(prefValue) {
- var usesSdk = this.doc.getroot().find('./uses-sdk');
-
- if (!usesSdk && prefValue) { // if there is no required uses-sdk element, we should create it first
- usesSdk = new et.Element('uses-sdk');
- this.doc.getroot().append(usesSdk);
- }
-
- if (prefValue) {
- usesSdk.attrib['android:' + prefName] = prefValue;
- }
-
- return this;
- };
-});
-
-AndroidManifest.prototype.getDebuggable = function() {
- return this.doc.getroot().find('./application').attrib['android:debuggable'] === 'true';
-};
-
-AndroidManifest.prototype.setDebuggable = function(value) {
- var application = this.doc.getroot().find('./application');
- if (value) {
- application.attrib['android:debuggable'] = 'true';
- } else {
- // The default value is "false", so we can remove attribute at all.
- delete application.attrib['android:debuggable'];
- }
- return this;
-};
-
-/**
- * Writes manifest to disk syncronously. If filename is specified, then manifest
- * will be written to that file
- *
- * @param {String} [destPath] File to write manifest to. If omitted,
- * manifest will be written to file it has been read from.
- */
-AndroidManifest.prototype.write = function(destPath) {
- fs.writeFileSync(destPath || this.path, this.doc.write({indent: 4}), 'utf-8');
-};
-
-module.exports = AndroidManifest;
-
-function capitalize (str) {
- return str.charAt(0).toUpperCase() + str.slice(1);
-}
http://git-wip-us.apache.org/repos/asf/cordova-lib/blob/e0c3fee6/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/AndroidProject.js
----------------------------------------------------------------------
diff --git a/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/AndroidProject.js b/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/AndroidProject.js
deleted file mode 100644
index fa1c612..0000000
--- a/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/AndroidProject.js
+++ /dev/null
@@ -1,210 +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 fs = require('fs');
-var path = require('path');
-var properties_parser = require('properties-parser');
-var AndroidManifest = require('./AndroidManifest');
-var AndroidStudio = require('./AndroidStudio');
-var pluginHandlers = require('./pluginHandlers');
-
-var projectFileCache = {};
-
-function addToPropertyList(projectProperties, key, value) {
- var i = 1;
- while (projectProperties.get(key + '.' + i))
- i++;
-
- projectProperties.set(key + '.' + i, value);
- projectProperties.dirty = true;
-}
-
-function removeFromPropertyList(projectProperties, key, value) {
- var i = 1;
- var currentValue;
- while ((currentValue = projectProperties.get(key + '.' + i))) {
- if (currentValue === value) {
- while ((currentValue = projectProperties.get(key + '.' + (i + 1)))) {
- projectProperties.set(key + '.' + i, currentValue);
- i++;
- }
- projectProperties.set(key + '.' + i);
- break;
- }
- i++;
- }
- projectProperties.dirty = true;
-}
-
-function getRelativeLibraryPath (parentDir, subDir) {
- var libraryPath = path.relative(parentDir, subDir);
- return (path.sep == '\\') ? libraryPath.replace(/\\/g, '/') : libraryPath;
-}
-
-function AndroidProject(projectDir) {
- this._propertiesEditors = {};
- this._subProjectDirs = {};
- this._dirty = false;
- this.projectDir = projectDir;
- this.platformWww = path.join(this.projectDir, 'platform_www');
- this.www = path.join(this.projectDir, 'assets/www');
- if(AndroidStudio.isAndroidStudioProject(projectDir) === true) {
- this.www = path.join(this.projectDir, 'app/src/main/assets/www');
- }
-}
-
-AndroidProject.getProjectFile = function (projectDir) {
- if (!projectFileCache[projectDir]) {
- projectFileCache[projectDir] = new AndroidProject(projectDir);
- }
-
- return projectFileCache[projectDir];
-};
-
-AndroidProject.purgeCache = function (projectDir) {
- if (projectDir) {
- delete projectFileCache[projectDir];
- } else {
- projectFileCache = {};
- }
-};
-
-/**
- * Reads the package name out of the Android Manifest file
- *
- * @param {String} projectDir The absolute path to the directory containing the project
- *
- * @return {String} The name of the package
- */
-AndroidProject.prototype.getPackageName = function() {
- var manifestPath = path.join(this.projectDir, 'AndroidManifest.xml');
- if(AndroidStudio.isAndroidStudioProject(this.projectDir) === true) {
- manifestPath = path.join(this.projectDir, 'app/src/main/AndroidManifest.xml');
- }
- return new AndroidManifest(manifestPath).getPackageId();
-};
-
-AndroidProject.prototype.getCustomSubprojectRelativeDir = function(plugin_id, src) {
- // All custom subprojects are prefixed with the last portion of the package id.
- // This is to avoid collisions when opening multiple projects in Eclipse that have subprojects with the same name.
- var packageName = this.getPackageName();
- var lastDotIndex = packageName.lastIndexOf('.');
- var prefix = packageName.substring(lastDotIndex + 1);
- var subRelativeDir = path.join(plugin_id, prefix + '-' + path.basename(src));
- return subRelativeDir;
-};
-
-AndroidProject.prototype.addSubProject = function(parentDir, subDir) {
- var parentProjectFile = path.resolve(parentDir, 'project.properties');
- var subProjectFile = path.resolve(subDir, 'project.properties');
- var parentProperties = this._getPropertiesFile(parentProjectFile);
- // TODO: Setting the target needs to happen only for pre-3.7.0 projects
- if (fs.existsSync(subProjectFile)) {
- var subProperties = this._getPropertiesFile(subProjectFile);
- subProperties.set('target', parentProperties.get('target'));
- subProperties.dirty = true;
- this._subProjectDirs[subDir] = true;
- }
- addToPropertyList(parentProperties, 'android.library.reference', getRelativeLibraryPath(parentDir, subDir));
-
- this._dirty = true;
-};
-
-AndroidProject.prototype.removeSubProject = function(parentDir, subDir) {
- var parentProjectFile = path.resolve(parentDir, 'project.properties');
- var parentProperties = this._getPropertiesFile(parentProjectFile);
- removeFromPropertyList(parentProperties, 'android.library.reference', getRelativeLibraryPath(parentDir, subDir));
- delete this._subProjectDirs[subDir];
- this._dirty = true;
-};
-
-AndroidProject.prototype.addGradleReference = function(parentDir, subDir) {
- var parentProjectFile = path.resolve(parentDir, 'project.properties');
- var parentProperties = this._getPropertiesFile(parentProjectFile);
- addToPropertyList(parentProperties, 'cordova.gradle.include', getRelativeLibraryPath(parentDir, subDir));
- this._dirty = true;
-};
-
-AndroidProject.prototype.removeGradleReference = function(parentDir, subDir) {
- var parentProjectFile = path.resolve(parentDir, 'project.properties');
- var parentProperties = this._getPropertiesFile(parentProjectFile);
- removeFromPropertyList(parentProperties, 'cordova.gradle.include', getRelativeLibraryPath(parentDir, subDir));
- this._dirty = true;
-};
-
-AndroidProject.prototype.addSystemLibrary = function(parentDir, value) {
- var parentProjectFile = path.resolve(parentDir, 'project.properties');
- var parentProperties = this._getPropertiesFile(parentProjectFile);
- addToPropertyList(parentProperties, 'cordova.system.library', value);
- this._dirty = true;
-};
-
-AndroidProject.prototype.removeSystemLibrary = function(parentDir, value) {
- var parentProjectFile = path.resolve(parentDir, 'project.properties');
- var parentProperties = this._getPropertiesFile(parentProjectFile);
- removeFromPropertyList(parentProperties, 'cordova.system.library', value);
- this._dirty = true;
-};
-
-AndroidProject.prototype.write = function() {
- if (!this._dirty) {
- return;
- }
- this._dirty = false;
-
- for (var filename in this._propertiesEditors) {
- var editor = this._propertiesEditors[filename];
- if (editor.dirty) {
- fs.writeFileSync(filename, editor.toString());
- editor.dirty = false;
- }
- }
-};
-
-AndroidProject.prototype._getPropertiesFile = function (filename) {
- if (!this._propertiesEditors[filename]) {
- if (fs.existsSync(filename)) {
- this._propertiesEditors[filename] = properties_parser.createEditor(filename);
- } else {
- this._propertiesEditors[filename] = properties_parser.createEditor();
- }
- }
-
- return this._propertiesEditors[filename];
-};
-
-AndroidProject.prototype.getInstaller = function (type) {
- return pluginHandlers.getInstaller(type);
-};
-
-AndroidProject.prototype.getUninstaller = function (type) {
- return pluginHandlers.getUninstaller(type);
-};
-
-/*
- * This checks if an Android project is clean or has old build artifacts
- */
-
-AndroidProject.prototype.isClean = function() {
- var build_path = path.join(this.projectDir, 'build');
- //If the build directory doesn't exist, it's clean
- return !(fs.existsSync(build_path));
-};
-
-module.exports = AndroidProject;
http://git-wip-us.apache.org/repos/asf/cordova-lib/blob/e0c3fee6/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/AndroidStudio.js
----------------------------------------------------------------------
diff --git a/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/AndroidStudio.js b/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/AndroidStudio.js
deleted file mode 100644
index 335b334..0000000
--- a/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/AndroidStudio.js
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * This is a simple routine that checks if project is an Android Studio Project
- *
- * @param {String} root Root folder of the project
- */
-
-/*jshint esnext: false */
-
-var path = require('path');
-var fs = require('fs');
-var CordovaError = require('cordova-common').CordovaError;
-
-module.exports.isAndroidStudioProject = function isAndroidStudioProject(root) {
- var eclipseFiles = ['AndroidManifest.xml', 'libs', 'res', 'project.properties', 'platform_www'];
- var androidStudioFiles = ['app', 'gradle', 'app/src/main/res'];
-
- // assume it is an AS project and not an Eclipse project
- var isEclipse = false;
- var isAS = true;
-
- if(!fs.existsSync(root)) {
- throw new CordovaError('AndroidStudio.js:inAndroidStudioProject root does not exist: ' + root);
- }
-
- // if any of the following exists, then we are not an ASProj
- eclipseFiles.forEach(function(file) {
- if(fs.existsSync(path.join(root, file))) {
- isEclipse = true;
- }
- });
-
- // if it is NOT an eclipse project, check that all required files exist
- if(!isEclipse) {
- androidStudioFiles.forEach(function(file){
- if(!fs.existsSync(path.join(root, file))) {
- console.log('missing file :: ' + file);
- isAS = false;
- }
- });
- }
- return (!isEclipse && isAS);
-};
http://git-wip-us.apache.org/repos/asf/cordova-lib/blob/e0c3fee6/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/build.js
----------------------------------------------------------------------
diff --git a/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/build.js b/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/build.js
deleted file mode 100644
index bd613da..0000000
--- a/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/build.js
+++ /dev/null
@@ -1,301 +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'),
- path = require('path'),
- fs = require('fs'),
- nopt = require('nopt');
-
-var Adb = require('./Adb');
-
-var builders = require('./builders/builders');
-var events = require('cordova-common').events;
-var spawn = require('cordova-common').superspawn.spawn;
-var CordovaError = require('cordova-common').CordovaError;
-
-function parseOpts(options, resolvedTarget, projectRoot) {
- options = options || {};
- options.argv = nopt({
- gradle: Boolean,
- ant: Boolean,
- prepenv: Boolean,
- versionCode: String,
- minSdkVersion: String,
- gradleArg: [String, Array],
- keystore: path,
- alias: String,
- storePassword: String,
- password: String,
- keystoreType: String
- }, {}, options.argv, 0);
-
- var ret = {
- buildType: options.release ? 'release' : 'debug',
- buildMethod: process.env.ANDROID_BUILD || 'gradle',
- prepEnv: options.argv.prepenv,
- arch: resolvedTarget && resolvedTarget.arch,
- extraArgs: []
- };
-
- if (options.argv.ant || options.argv.gradle)
- ret.buildMethod = options.argv.ant ? 'ant' : 'gradle';
-
- if (options.nobuild) ret.buildMethod = 'none';
-
- if (options.argv.versionCode)
- ret.extraArgs.push('-PcdvVersionCode=' + options.argv.versionCode);
-
- if (options.argv.minSdkVersion)
- ret.extraArgs.push('-PcdvMinSdkVersion=' + options.argv.minSdkVersion);
-
- if (options.argv.gradleArg) {
- ret.extraArgs = ret.extraArgs.concat(options.argv.gradleArg);
- }
-
- var packageArgs = {};
-
- if (options.argv.keystore)
- packageArgs.keystore = path.relative(projectRoot, path.resolve(options.argv.keystore));
-
- ['alias','storePassword','password','keystoreType'].forEach(function (flagName) {
- if (options.argv[flagName])
- packageArgs[flagName] = options.argv[flagName];
- });
-
- var buildConfig = options.buildConfig;
-
- // If some values are not specified as command line arguments - use build config to supplement them.
- // Command line arguemnts have precedence over build config.
- if (buildConfig) {
- if (!fs.existsSync(buildConfig)) {
- throw new Error('Specified build config file does not exist: ' + buildConfig);
- }
- events.emit('log', 'Reading build config file: '+ path.resolve(buildConfig));
- var buildjson = fs.readFileSync(buildConfig, 'utf8');
- var config = JSON.parse(buildjson.replace(/^\ufeff/, '')); // Remove BOM
- if (config.android && config.android[ret.buildType]) {
- var androidInfo = config.android[ret.buildType];
- if(androidInfo.keystore && !packageArgs.keystore) {
- if(androidInfo.keystore.substr(0,1) === '~') {
- androidInfo.keystore = process.env.HOME + androidInfo.keystore.substr(1);
- }
- packageArgs.keystore = path.resolve(path.dirname(buildConfig), androidInfo.keystore);
- events.emit('log', 'Reading the keystore from: ' + packageArgs.keystore);
- }
-
- ['alias', 'storePassword', 'password','keystoreType'].forEach(function (key){
- packageArgs[key] = packageArgs[key] || androidInfo[key];
- });
- }
- }
-
- if (packageArgs.keystore && packageArgs.alias) {
- ret.packageInfo = new PackageInfo(packageArgs.keystore, packageArgs.alias, packageArgs.storePassword,
- packageArgs.password, packageArgs.keystoreType);
- }
-
- if(!ret.packageInfo) {
- if(Object.keys(packageArgs).length > 0) {
- events.emit('warn', '\'keystore\' and \'alias\' need to be specified to generate a signed archive.');
- }
- }
-
- return ret;
-}
-
-/*
- * Builds the project with the specifed options
- * Returns a promise.
- */
-module.exports.runClean = function(options) {
- var opts = parseOpts(options, null, this.root);
- var builder = builders.getBuilder(opts.buildMethod);
- return builder.prepEnv(opts)
- .then(function() {
- return builder.clean(opts);
- });
-};
-
-/**
- * Builds the project with the specifed options.
- *
- * @param {BuildOptions} options A set of options. See PlatformApi.build
- * method documentation for reference.
- * @param {Object} optResolvedTarget A deployment target. Used to pass
- * target architecture from upstream 'run' call. TODO: remove this option in
- * favor of setting buildOptions.archs field.
- *
- * @return {Promise<Object>} Promise, resolved with built packages
- * information.
- */
-module.exports.run = function(options, optResolvedTarget) {
- var opts = parseOpts(options, optResolvedTarget, this.root);
- var builder = builders.getBuilder(opts.buildMethod);
- return builder.prepEnv(opts)
- .then(function() {
- if (opts.prepEnv) {
- events.emit('verbose', 'Build file successfully prepared.');
- return;
- }
- return builder.build(opts)
- .then(function() {
- var apkPaths = builder.findOutputApks(opts.buildType, opts.arch);
- events.emit('log', 'Built the following apk(s): \n\t' + apkPaths.join('\n\t'));
- return {
- apkPaths: apkPaths,
- buildType: opts.buildType,
- buildMethod: opts.buildMethod
- };
- });
- });
-};
-
-/*
- * Detects the architecture of a device/emulator
- * Returns "arm" or "x86".
- */
-module.exports.detectArchitecture = function(target) {
- function helper() {
- return Adb.shell(target, 'cat /proc/cpuinfo')
- .then(function(output) {
- return /intel/i.exec(output) ? 'x86' : 'arm';
- });
- }
- // It sometimes happens (at least on OS X), that this command will hang forever.
- // To fix it, either unplug & replug device, or restart adb server.
- return helper()
- .timeout(1000, new CordovaError('Device communication timed out. Try unplugging & replugging the device.'))
- .then(null, function(err) {
- if (/timed out/.exec('' + err)) {
- // 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.
- events.emit('verbose', 'adb timed out while detecting device/emulator architecture. Killing adb and trying again.');
- return spawn('killall', ['adb'])
- .then(function() {
- return helper()
- .then(null, function() {
- // The double kill is sadly often necessary, at least on mac.
- events.emit('warn', 'adb timed out a second time while detecting device/emulator architecture. Killing adb and trying again.');
- return spawn('killall', ['adb'])
- .then(function() {
- return helper()
- .then(null, function() {
- return Q.reject(new CordovaError('adb timed out a third time while detecting device/emulator architecture. Try unplugging & replugging the device.'));
- });
- });
- });
- }, function() {
- // For non-killall OS's.
- return Q.reject(err);
- });
- }
- throw err;
- });
-};
-
-module.exports.findBestApkForArchitecture = function(buildResults, arch) {
- var paths = buildResults.apkPaths.filter(function(p) {
- var apkName = path.basename(p);
- if (buildResults.buildType == 'debug') {
- return /-debug/.exec(apkName);
- }
- return !/-debug/.exec(apkName);
- });
- var archPattern = new RegExp('-' + arch);
- var hasArchPattern = /-x86|-arm/;
- for (var i = 0; i < paths.length; ++i) {
- var apkName = path.basename(paths[i]);
- if (hasArchPattern.exec(apkName)) {
- if (archPattern.exec(apkName)) {
- return paths[i];
- }
- } else {
- return paths[i];
- }
- }
- throw new Error('Could not find apk architecture: ' + arch + ' build-type: ' + buildResults.buildType);
-};
-
-function PackageInfo(keystore, alias, storePassword, password, keystoreType) {
- this.keystore = {
- 'name': 'key.store',
- 'value': keystore
- };
- this.alias = {
- 'name': 'key.alias',
- 'value': alias
- };
- if (storePassword) {
- this.storePassword = {
- 'name': 'key.store.password',
- 'value': storePassword
- };
- }
- if (password) {
- this.password = {
- 'name': 'key.alias.password',
- 'value': password
- };
- }
- if (keystoreType) {
- this.keystoreType = {
- 'name': 'key.store.type',
- 'value': keystoreType
- };
- }
-}
-
-PackageInfo.prototype = {
- toProperties: function() {
- var self = this;
- var result = '';
- Object.keys(self).forEach(function(key) {
- result += self[key].name;
- result += '=';
- result += self[key].value.replace(/\\/g, '\\\\');
- result += '\n';
- });
- return result;
- }
-};
-
-module.exports.help = function() {
- console.log('Usage: ' + path.relative(process.cwd(), path.join('../build')) + ' [flags] [Signed APK flags]');
- console.log('Flags:');
- console.log(' \'--debug\': will build project in debug mode (default)');
- console.log(' \'--release\': will build project for release');
- console.log(' \'--ant\': will build project with ant');
- console.log(' \'--gradle\': will build project with gradle (default)');
- console.log(' \'--nobuild\': will skip build process (useful when using run command)');
- console.log(' \'--prepenv\': don\'t build, but copy in build scripts where necessary');
- console.log(' \'--versionCode=#\': Override versionCode for this build. Useful for uploading multiple APKs. Requires --gradle.');
- console.log(' \'--minSdkVersion=#\': Override minSdkVersion for this build. Useful for uploading multiple APKs. Requires --gradle.');
- console.log(' \'--gradleArg=<gradle command line arg>\': Extra args to pass to the gradle command. Use one flag per arg. Ex. --gradleArg=-PcdvBuildMultipleApks=true');
- console.log('');
- console.log('Signed APK flags (overwrites debug/release-signing.proprties) :');
- console.log(' \'--keystore=<path to keystore>\': Key store used to build a signed archive. (Required)');
- console.log(' \'--alias=\': Alias for the key store. (Required)');
- console.log(' \'--storePassword=\': Password for the key store. (Optional - prompted)');
- console.log(' \'--password=\': Password for the key. (Optional - prompted)');
- console.log(' \'--keystoreType\': Type of the keystore. (Optional)');
- process.exit(0);
-};
http://git-wip-us.apache.org/repos/asf/cordova-lib/blob/e0c3fee6/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/builders/AntBuilder.js
----------------------------------------------------------------------
diff --git a/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/builders/AntBuilder.js b/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/builders/AntBuilder.js
deleted file mode 100644
index 4e0f71a..0000000
--- a/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/builders/AntBuilder.js
+++ /dev/null
@@ -1,156 +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 util = require('util');
-var shell = require('shelljs');
-var spawn = require('cordova-common').superspawn.spawn;
-var CordovaError = require('cordova-common').CordovaError;
-var check_reqs = require('../check_reqs');
-
-var SIGNING_PROPERTIES = '-signing.properties';
-var MARKER = 'YOUR CHANGES WILL BE ERASED!';
-var TEMPLATE =
- '# This file is automatically generated.\n' +
- '# Do not modify this file -- ' + MARKER + '\n';
-
-var GenericBuilder = require('./GenericBuilder');
-
-function AntBuilder (projectRoot) {
- GenericBuilder.call(this, projectRoot);
-
- this.binDirs = {ant: this.binDirs.ant};
-}
-
-util.inherits(AntBuilder, GenericBuilder);
-
-AntBuilder.prototype.getArgs = function(cmd, opts) {
- var args = [cmd, '-f', path.join(this.root, 'build.xml')];
- // custom_rules.xml is required for incremental builds.
- if (hasCustomRules(this.root)) {
- args.push('-Dout.dir=ant-build', '-Dgen.absolute.dir=ant-gen');
- }
- if(opts.packageInfo) {
- args.push('-propertyfile=' + path.join(this.root, opts.buildType + SIGNING_PROPERTIES));
- }
- return args;
-};
-
-AntBuilder.prototype.prepEnv = function(opts) {
- var self = this;
- return check_reqs.check_ant()
- .then(function() {
- // Copy in build.xml on each build so that:
- // A) we don't require the Android SDK at project creation time, and
- // B) we always use the SDK's latest version of it.
- /*jshint -W069 */
- var sdkDir = process.env['ANDROID_HOME'];
- /*jshint +W069 */
- var buildTemplate = fs.readFileSync(path.join(sdkDir, 'tools', 'lib', 'build.template'), 'utf8');
- function writeBuildXml(projectPath) {
- var newData = buildTemplate.replace('PROJECT_NAME', self.extractRealProjectNameFromManifest());
- fs.writeFileSync(path.join(projectPath, 'build.xml'), newData);
- if (!fs.existsSync(path.join(projectPath, 'local.properties'))) {
- fs.writeFileSync(path.join(projectPath, 'local.properties'), TEMPLATE);
- }
- }
- writeBuildXml(self.root);
- var propertiesObj = self.readProjectProperties();
- var subProjects = propertiesObj.libs;
- for (var i = 0; i < subProjects.length; ++i) {
- writeBuildXml(path.join(self.root, subProjects[i]));
- }
- if (propertiesObj.systemLibs.length > 0) {
- throw new CordovaError('Project contains at least one plugin that requires a system library. This is not supported with ANT. Use gradle instead.');
- }
-
- var propertiesFile = opts.buildType + SIGNING_PROPERTIES;
- var propertiesFilePath = path.join(self.root, propertiesFile);
- if (opts.packageInfo) {
- fs.writeFileSync(propertiesFilePath, TEMPLATE + opts.packageInfo.toProperties());
- } else if(isAutoGenerated(propertiesFilePath)) {
- shell.rm('-f', propertiesFilePath);
- }
- });
-};
-
-/*
- * Builds the project with ant.
- * Returns a promise.
- */
-AntBuilder.prototype.build = function(opts) {
- // Without our custom_rules.xml, we need to clean before building.
- var ret = Q();
- if (!hasCustomRules(this.root)) {
- // clean will call check_ant() for us.
- ret = this.clean(opts);
- }
-
- var args = this.getArgs(opts.buildType == 'debug' ? 'debug' : 'release', opts);
- return check_reqs.check_ant()
- .then(function() {
- return spawn('ant', args, {stdio: 'pipe'});
- }).progress(function (stdio){
- if (stdio.stderr) {
- process.stderr.write(stdio.stderr);
- } else {
- process.stdout.write(stdio.stdout);
- }
- }).catch(function (error) {
- if (error.toString().indexOf('Unable to resolve project target') >= 0) {
- return check_reqs.check_android_target(error).then(function() {
- // If due to some odd reason - check_android_target succeeds
- // we should still fail here.
- return Q.reject(error);
- });
- }
- return Q.reject(error);
- });
-};
-
-AntBuilder.prototype.clean = function(opts) {
- var args = this.getArgs('clean', opts);
- var self = this;
- return check_reqs.check_ant()
- .then(function() {
- return spawn('ant', args, {stdio: 'inherit'});
- })
- .then(function () {
- shell.rm('-rf', path.join(self.root, 'out'));
-
- ['debug', 'release'].forEach(function(config) {
- var propertiesFilePath = path.join(self.root, config + SIGNING_PROPERTIES);
- if(isAutoGenerated(propertiesFilePath)){
- shell.rm('-f', propertiesFilePath);
- }
- });
- });
-};
-
-module.exports = AntBuilder;
-
-function hasCustomRules(projectRoot) {
- return fs.existsSync(path.join(projectRoot, 'custom_rules.xml'));
-}
-
-function isAutoGenerated(file) {
- return fs.existsSync(file) && fs.readFileSync(file, 'utf8').indexOf(MARKER) > 0;
-}
http://git-wip-us.apache.org/repos/asf/cordova-lib/blob/e0c3fee6/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/builders/GenericBuilder.js
----------------------------------------------------------------------
diff --git a/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/builders/GenericBuilder.js b/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/builders/GenericBuilder.js
deleted file mode 100644
index 362da43..0000000
--- a/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/builders/GenericBuilder.js
+++ /dev/null
@@ -1,147 +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 CordovaError = require('cordova-common').CordovaError;
-
-function GenericBuilder (projectDir) {
- this.root = projectDir || path.resolve(__dirname, '../../..');
- this.binDirs = {
- ant: path.join(this.root, hasCustomRules(this.root) ? 'ant-build' : 'bin'),
- gradle: path.join(this.root, 'build', 'outputs', 'apk')
- };
-}
-
-function hasCustomRules(projectRoot) {
- return fs.existsSync(path.join(projectRoot, 'custom_rules.xml'));
-}
-
-GenericBuilder.prototype.prepEnv = function() {
- return Q();
-};
-
-GenericBuilder.prototype.build = function() {
- events.emit('log', 'Skipping build...');
- return Q(null);
-};
-
-GenericBuilder.prototype.clean = function() {
- return Q();
-};
-
-GenericBuilder.prototype.findOutputApks = function(build_type, arch) {
- var self = this;
- return Object.keys(this.binDirs)
- .reduce(function (result, builderName) {
- var binDir = self.binDirs[builderName];
- return result.concat(findOutputApksHelper(binDir, build_type, builderName === 'ant' ? null : arch));
- }, [])
- .sort(apkSorter);
-};
-
-GenericBuilder.prototype.readProjectProperties = function () {
- function findAllUniq(data, r) {
- var s = {};
- var m;
- while ((m = r.exec(data))) {
- s[m[1]] = 1;
- }
- return Object.keys(s);
- }
-
- var data = fs.readFileSync(path.join(this.root, 'project.properties'), 'utf8');
- return {
- libs: findAllUniq(data, /^\s*android\.library\.reference\.\d+=(.*)(?:\s|$)/mg),
- gradleIncludes: findAllUniq(data, /^\s*cordova\.gradle\.include\.\d+=(.*)(?:\s|$)/mg),
- systemLibs: findAllUniq(data, /^\s*cordova\.system\.library\.\d+=(.*)(?:\s|$)/mg)
- };
-};
-
-GenericBuilder.prototype.extractRealProjectNameFromManifest = function () {
- var manifestPath = path.join(this.root, 'AndroidManifest.xml');
- var manifestData = fs.readFileSync(manifestPath, 'utf8');
- var m = /<manifest[\s\S]*?package\s*=\s*"(.*?)"/i.exec(manifestData);
- if (!m) {
- throw new CordovaError('Could not find package name in ' + manifestPath);
- }
-
- var packageName=m[1];
- var lastDotIndex = packageName.lastIndexOf('.');
- return packageName.substring(lastDotIndex + 1);
-};
-
-module.exports = GenericBuilder;
-
-function apkSorter(fileA, fileB) {
- // De-prioritize unsigned builds
- var unsignedRE = /-unsigned/;
- if (unsignedRE.exec(fileA)) {
- return 1;
- } else if (unsignedRE.exec(fileB)) {
- return -1;
- }
-
- var timeDiff = fs.statSync(fileA).mtime - fs.statSync(fileB).mtime;
- return timeDiff === 0 ? fileA.length - fileB.length : timeDiff;
-}
-
-function findOutputApksHelper(dir, build_type, arch) {
- var shellSilent = shell.config.silent;
- shell.config.silent = true;
-
- var ret = shell.ls(path.join(dir, '*.apk'))
- .filter(function(candidate) {
- var apkName = path.basename(candidate);
- // Need to choose between release and debug .apk.
- if (build_type === 'debug') {
- return /-debug/.exec(apkName) && !/-unaligned|-unsigned/.exec(apkName);
- }
- if (build_type === 'release') {
- return /-release/.exec(apkName) && !/-unaligned/.exec(apkName);
- }
- return true;
- })
- .sort(apkSorter);
-
- shellSilent = shellSilent;
-
- if (ret.length === 0) {
- return ret;
- }
- // Assume arch-specific build if newest apk has -x86 or -arm.
- var archSpecific = !!/-x86|-arm/.exec(path.basename(ret[0]));
- // And show only arch-specific ones (or non-arch-specific)
- ret = ret.filter(function(p) {
- /*jshint -W018 */
- return !!/-x86|-arm/.exec(path.basename(p)) == archSpecific;
- /*jshint +W018 */
- });
-
- if (archSpecific && ret.length > 1 && arch) {
- ret = ret.filter(function(p) {
- return path.basename(p).indexOf('-' + arch) != -1;
- });
- }
-
- return ret;
-}
http://git-wip-us.apache.org/repos/asf/cordova-lib/blob/e0c3fee6/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/builders/GradleBuilder.js
----------------------------------------------------------------------
diff --git a/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/builders/GradleBuilder.js b/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/builders/GradleBuilder.js
deleted file mode 100644
index 0d7f6a2..0000000
--- a/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/builders/GradleBuilder.js
+++ /dev/null
@@ -1,278 +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 util = require('util');
-var path = require('path');
-var shell = require('shelljs');
-var spawn = require('cordova-common').superspawn.spawn;
-var CordovaError = require('cordova-common').CordovaError;
-var check_reqs = require('../check_reqs');
-
-var GenericBuilder = require('./GenericBuilder');
-
-var MARKER = 'YOUR CHANGES WILL BE ERASED!';
-var SIGNING_PROPERTIES = '-signing.properties';
-var TEMPLATE =
- '# This file is automatically generated.\n' +
- '# Do not modify this file -- ' + MARKER + '\n';
-
-function GradleBuilder (projectRoot) {
- GenericBuilder.call(this, projectRoot);
-
- this.binDirs = {gradle: this.binDirs.gradle};
-}
-
-util.inherits(GradleBuilder, GenericBuilder);
-
-GradleBuilder.prototype.getArgs = function(cmd, opts) {
- if (cmd == 'release') {
- cmd = 'cdvBuildRelease';
- } else if (cmd == 'debug') {
- cmd = 'cdvBuildDebug';
- }
- var args = [cmd, '-b', path.join(this.root, 'build.gradle')];
- if (opts.arch) {
- args.push('-PcdvBuildArch=' + opts.arch);
- }
-
- // 10 seconds -> 6 seconds
- args.push('-Dorg.gradle.daemon=true');
- // to allow dex in process
- args.push('-Dorg.gradle.jvmargs=-Xmx2048m');
- // allow NDK to be used - required by Gradle 1.5 plugin
- args.push('-Pandroid.useDeprecatedNdk=true');
- args.push.apply(args, opts.extraArgs);
- // Shaves another 100ms, but produces a "try at own risk" warning. Not worth it (yet):
- // args.push('-Dorg.gradle.parallel=true');
- return args;
-};
-
-/*
- * This returns a promise
- */
-
-GradleBuilder.prototype.runGradleWrapper = function(gradle_cmd) {
- var gradlePath = path.join(this.root, 'gradlew');
- var wrapperGradle = path.join(this.root, 'wrapper.gradle');
- if(fs.existsSync(gradlePath)) {
- //Literally do nothing, for some reason this works, while !fs.existsSync didn't on Windows
- } else {
- return spawn(gradle_cmd, ['-p', this.root, 'wrapper', '-b', wrapperGradle], {stdio: 'inherit'});
- }
-};
-
-
-// Makes the project buildable, minus the gradle wrapper.
-GradleBuilder.prototype.prepBuildFiles = function() {
- // Update the version of build.gradle in each dependent library.
- var pluginBuildGradle = path.join(this.root, 'cordova', 'lib', 'plugin-build.gradle');
- var propertiesObj = this.readProjectProperties();
- var subProjects = propertiesObj.libs;
- var checkAndCopy = function(subProject, root) {
- var subProjectGradle = path.join(root, subProject, 'build.gradle');
- // This is the future-proof way of checking if a file exists
- // This must be synchronous to satisfy a Travis test
- try {
- fs.accessSync(subProjectGradle, fs.F_OK);
- } catch (e) {
- shell.cp('-f', pluginBuildGradle, subProjectGradle);
- }
- };
- for (var i = 0; i < subProjects.length; ++i) {
- if (subProjects[i] !== 'CordovaLib') {
- checkAndCopy(subProjects[i], this.root);
- }
- }
- var name = this.extractRealProjectNameFromManifest();
- //Remove the proj.id/name- prefix from projects: https://issues.apache.org/jira/browse/CB-9149
- var settingsGradlePaths = subProjects.map(function(p){
- var realDir=p.replace(/[/\\]/g, ':');
- var libName=realDir.replace(name+'-','');
- var str='include ":'+libName+'"\n';
- if(realDir.indexOf(name+'-')!==-1)
- str+='project(":'+libName+'").projectDir = new File("'+p+'")\n';
- return str;
- });
-
- // Write the settings.gradle file.
- fs.writeFileSync(path.join(this.root, 'settings.gradle'),
- '// GENERATED FILE - DO NOT EDIT\n' +
- 'include ":"\n' + settingsGradlePaths.join(''));
- // Update dependencies within build.gradle.
- var buildGradle = fs.readFileSync(path.join(this.root, 'build.gradle'), 'utf8');
- var depsList = '';
- var root = this.root;
- var insertExclude = function(p) {
- var gradlePath = path.join(root, p, 'build.gradle');
- var projectGradleFile = fs.readFileSync(gradlePath, 'utf-8');
- if(projectGradleFile.indexOf('CordovaLib') != -1) {
- depsList += '{\n exclude module:("CordovaLib")\n }\n';
- }
- else {
- depsList +='\n';
- }
- };
- subProjects.forEach(function(p) {
- var libName=p.replace(/[/\\]/g, ':').replace(name+'-','');
- depsList += ' debugCompile(project(path: "' + libName + '", configuration: "debug"))';
- insertExclude(p);
- depsList += ' releaseCompile(project(path: "' + libName + '", configuration: "release"))';
- insertExclude(p);
- });
- // For why we do this mapping: https://issues.apache.org/jira/browse/CB-8390
- var SYSTEM_LIBRARY_MAPPINGS = [
- [/^\/?extras\/android\/support\/(.*)$/, 'com.android.support:support-$1:+'],
- [/^\/?google\/google_play_services\/libproject\/google-play-services_lib\/?$/, 'com.google.android.gms:play-services:+']
- ];
- propertiesObj.systemLibs.forEach(function(p) {
- var mavenRef;
- // It's already in gradle form if it has two ':'s
- if (/:.*:/.exec(p)) {
- mavenRef = p;
- } else {
- for (var i = 0; i < SYSTEM_LIBRARY_MAPPINGS.length; ++i) {
- var pair = SYSTEM_LIBRARY_MAPPINGS[i];
- if (pair[0].exec(p)) {
- mavenRef = p.replace(pair[0], pair[1]);
- break;
- }
- }
- if (!mavenRef) {
- throw new CordovaError('Unsupported system library (does not work with gradle): ' + p);
- }
- }
- depsList += ' compile "' + mavenRef + '"\n';
- });
- buildGradle = buildGradle.replace(/(SUB-PROJECT DEPENDENCIES START)[\s\S]*(\/\/ SUB-PROJECT DEPENDENCIES END)/, '$1\n' + depsList + ' $2');
- var includeList = '';
- propertiesObj.gradleIncludes.forEach(function(includePath) {
- includeList += 'apply from: "' + includePath + '"\n';
- });
- buildGradle = buildGradle.replace(/(PLUGIN GRADLE EXTENSIONS START)[\s\S]*(\/\/ PLUGIN GRADLE EXTENSIONS END)/, '$1\n' + includeList + '$2');
- fs.writeFileSync(path.join(this.root, 'build.gradle'), buildGradle);
-};
-
-GradleBuilder.prototype.prepEnv = function(opts) {
- var self = this;
- return check_reqs.check_gradle()
- .then(function(gradlePath) {
- return self.runGradleWrapper(gradlePath);
- }).then(function() {
- return self.prepBuildFiles();
- }).then(function() {
- // We now copy the gradle out of the framework
- // This is a dirty patch to get the build working
- /*
- var wrapperDir = path.join(self.root, 'CordovaLib');
- if (process.platform == 'win32') {
- shell.rm('-f', path.join(self.root, 'gradlew.bat'));
- shell.cp(path.join(wrapperDir, 'gradlew.bat'), self.root);
- } else {
- shell.rm('-f', path.join(self.root, 'gradlew'));
- shell.cp(path.join(wrapperDir, 'gradlew'), self.root);
- }
- shell.rm('-rf', path.join(self.root, 'gradle', 'wrapper'));
- shell.mkdir('-p', path.join(self.root, 'gradle'));
- shell.cp('-r', path.join(wrapperDir, 'gradle', 'wrapper'), path.join(self.root, 'gradle'));
-*/
- // If the gradle distribution URL is set, make sure it points to version we want.
- // If it's not set, do nothing, assuming that we're using a future version of gradle that we don't want to mess with.
- // For some reason, using ^ and $ don't work. This does the job, though.
- var distributionUrlRegex = /distributionUrl.*zip/;
- /*jshint -W069 */
- var distributionUrl = process.env['CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL'] || 'https\\://services.gradle.org/distributions/gradle-3.3-all.zip';
- /*jshint +W069 */
- var gradleWrapperPropertiesPath = path.join(self.root, 'gradle', 'wrapper', 'gradle-wrapper.properties');
- shell.chmod('u+w', gradleWrapperPropertiesPath);
- shell.sed('-i', distributionUrlRegex, 'distributionUrl='+distributionUrl, gradleWrapperPropertiesPath);
-
- var propertiesFile = opts.buildType + SIGNING_PROPERTIES;
- var propertiesFilePath = path.join(self.root, propertiesFile);
- if (opts.packageInfo) {
- fs.writeFileSync(propertiesFilePath, TEMPLATE + opts.packageInfo.toProperties());
- } else if (isAutoGenerated(propertiesFilePath)) {
- shell.rm('-f', propertiesFilePath);
- }
- });
-};
-
-/*
- * Builds the project with gradle.
- * Returns a promise.
- */
-GradleBuilder.prototype.build = function(opts) {
- var wrapper = path.join(this.root, 'gradlew');
- var args = this.getArgs(opts.buildType == 'debug' ? 'debug' : 'release', opts);
-
- return spawn(wrapper, args, {stdio: 'pipe'})
- .progress(function (stdio){
- if (stdio.stderr) {
- /*
- * Workaround for the issue with Java printing some unwanted information to
- * stderr instead of stdout.
- * This function suppresses 'Picked up _JAVA_OPTIONS' message from being
- * printed to stderr. See https://issues.apache.org/jira/browse/CB-9971 for
- * explanation.
- */
- var suppressThisLine = /^Picked up _JAVA_OPTIONS: /i.test(stdio.stderr.toString());
- if (suppressThisLine) {
- return;
- }
- process.stderr.write(stdio.stderr);
- } else {
- process.stdout.write(stdio.stdout);
- }
- }).catch(function (error) {
- if (error.toString().indexOf('failed to find target with hash string') >= 0) {
- return check_reqs.check_android_target(error).then(function() {
- // If due to some odd reason - check_android_target succeeds
- // we should still fail here.
- return Q.reject(error);
- });
- }
- return Q.reject(error);
- });
-};
-
-GradleBuilder.prototype.clean = function(opts) {
- var builder = this;
- var wrapper = path.join(this.root, 'gradlew');
- var args = builder.getArgs('clean', opts);
- return Q().then(function() {
- return spawn(wrapper, args, {stdio: 'inherit'});
- })
- .then(function () {
- shell.rm('-rf', path.join(builder.root, 'out'));
-
- ['debug', 'release'].forEach(function(config) {
- var propertiesFilePath = path.join(builder.root, config + SIGNING_PROPERTIES);
- if(isAutoGenerated(propertiesFilePath)){
- shell.rm('-f', propertiesFilePath);
- }
- });
- });
-};
-
-module.exports = GradleBuilder;
-
-function isAutoGenerated(file) {
- return fs.existsSync(file) && fs.readFileSync(file, 'utf8').indexOf(MARKER) > 0;
-}
http://git-wip-us.apache.org/repos/asf/cordova-lib/blob/e0c3fee6/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/builders/builders.js
----------------------------------------------------------------------
diff --git a/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/builders/builders.js b/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/builders/builders.js
deleted file mode 100644
index 4921c49..0000000
--- a/cordova-lib/spec-cordova/fixtures/platforms/atari/bin/templates/cordova/lib/builders/builders.js
+++ /dev/null
@@ -1,47 +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 CordovaError = require('cordova-common').CordovaError;
-
-var knownBuilders = {
- ant: 'AntBuilder',
- gradle: 'GradleBuilder',
- none: 'GenericBuilder'
-};
-
-/**
- * Helper method that instantiates and returns a builder for specified build
- * type.
- *
- * @param {String} builderType Builder name to construct and return. Must
- * be one of 'ant', 'gradle' or 'none'
- *
- * @return {Builder} A builder instance for specified build type.
- */
-module.exports.getBuilder = function (builderType, projectRoot) {
- if (!knownBuilders[builderType])
- throw new CordovaError('Builder ' + builderType + ' is not supported.');
-
- try {
- var Builder = require('./' + knownBuilders[builderType]);
- return new Builder(projectRoot);
- } catch (err) {
- throw new CordovaError('Failed to instantiate ' + knownBuilders[builderType] + ' builder: ' + err);
- }
-};
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cordova.apache.org
For additional commands, e-mail: commits-help@cordova.apache.org