mirror of
https://github.com/apache/cordova-android.git
synced 2025-02-26 12:03:28 +08:00
CB-10749 Use cordova-common.CordovaLogger in cordova-android
Added -d shorthand to all platform scripts
This commit is contained in:
parent
18e81c4b90
commit
82582e5a5b
@ -28,7 +28,7 @@ var argv = require('nopt')({
|
|||||||
'shared' : Boolean,
|
'shared' : Boolean,
|
||||||
'link' : Boolean,
|
'link' : Boolean,
|
||||||
'activity-name' : [String, undefined]
|
'activity-name' : [String, undefined]
|
||||||
});
|
}, { 'd' : '--verbose' });
|
||||||
|
|
||||||
if (argv.help || argv.argv.remain.length === 0) {
|
if (argv.help || argv.argv.remain.length === 0) {
|
||||||
console.log('Usage: ' + path.relative(process.cwd(), path.join(__dirname, 'create')) + ' <path_to_new_project> <package_name> <project_name> [<template_path>] [--activity-name <activity_name>] [--link]');
|
console.log('Usage: ' + path.relative(process.cwd(), path.join(__dirname, 'create')) + ' <path_to_new_project> <package_name> <project_name> [<template_path>] [--activity-name <activity_name>] [--link]');
|
||||||
@ -53,4 +53,6 @@ var options = {
|
|||||||
activityName: argv['activity-name']
|
activityName: argv['activity-name']
|
||||||
};
|
};
|
||||||
|
|
||||||
|
require('./templates/cordova/loggingHelper').adjustLoggerLevel(argv);
|
||||||
|
|
||||||
Api.createPlatform(argv.argv.remain[0], config, options).done();
|
Api.createPlatform(argv.argv.remain[0], config, options).done();
|
||||||
|
33
bin/templates/cordova/Api.js
vendored
33
bin/templates/cordova/Api.js
vendored
@ -29,11 +29,25 @@ var AndroidProject = require('./lib/AndroidProject');
|
|||||||
var PlatformMunger = require('cordova-common').ConfigChanges.PlatformMunger;
|
var PlatformMunger = require('cordova-common').ConfigChanges.PlatformMunger;
|
||||||
var PluginInfoProvider = require('cordova-common').PluginInfoProvider;
|
var PluginInfoProvider = require('cordova-common').PluginInfoProvider;
|
||||||
|
|
||||||
var ConsoleLogger = require('./lib/ConsoleLogger');
|
|
||||||
var pluginHandlers = require('./lib/pluginHandlers');
|
var pluginHandlers = require('./lib/pluginHandlers');
|
||||||
|
var CordovaLogger = require('cordova-common').CordovaLogger;
|
||||||
|
var selfEvents = require('cordova-common').events;
|
||||||
|
|
||||||
var PLATFORM = 'android';
|
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
|
* Class, that acts as abstraction over particular platform. Encapsulates the
|
||||||
* platform's properties and methods.
|
* platform's properties and methods.
|
||||||
@ -48,9 +62,8 @@ var PLATFORM = 'android';
|
|||||||
function Api(platform, platformRootDir, events) {
|
function Api(platform, platformRootDir, events) {
|
||||||
this.platform = PLATFORM;
|
this.platform = PLATFORM;
|
||||||
this.root = path.resolve(__dirname, '..');
|
this.root = path.resolve(__dirname, '..');
|
||||||
this.events = events || ConsoleLogger.get();
|
|
||||||
// NOTE: trick to share one EventEmitter instance across all js code
|
setupEvents(events);
|
||||||
require('cordova-common').events = this.events;
|
|
||||||
|
|
||||||
this._platformJson = PlatformJson.load(this.root, platform);
|
this._platformJson = PlatformJson.load(this.root, platform);
|
||||||
this._pluginInfoProvider = new PluginInfoProvider();
|
this._pluginInfoProvider = new PluginInfoProvider();
|
||||||
@ -91,8 +104,10 @@ function Api(platform, platformRootDir, events) {
|
|||||||
* instance or rejected with CordovaError.
|
* instance or rejected with CordovaError.
|
||||||
*/
|
*/
|
||||||
Api.createPlatform = function (destination, config, options, events) {
|
Api.createPlatform = function (destination, config, options, events) {
|
||||||
|
events = setupEvents(events);
|
||||||
|
|
||||||
return require('../../lib/create')
|
return require('../../lib/create')
|
||||||
.create(destination, config, options, events || ConsoleLogger.get())
|
.create(destination, config, options, events)
|
||||||
.then(function (destination) {
|
.then(function (destination) {
|
||||||
var PlatformApi = require(path.resolve(destination, 'cordova/Api'));
|
var PlatformApi = require(path.resolve(destination, 'cordova/Api'));
|
||||||
return new PlatformApi(PLATFORM, destination, events);
|
return new PlatformApi(PLATFORM, destination, events);
|
||||||
@ -116,8 +131,10 @@ Api.createPlatform = function (destination, config, options, events) {
|
|||||||
* instance or rejected with CordovaError.
|
* instance or rejected with CordovaError.
|
||||||
*/
|
*/
|
||||||
Api.updatePlatform = function (destination, options, events) {
|
Api.updatePlatform = function (destination, options, events) {
|
||||||
|
events = setupEvents(events);
|
||||||
|
|
||||||
return require('../../lib/create')
|
return require('../../lib/create')
|
||||||
.update(destination, options, events || ConsoleLogger.get())
|
.update(destination, options, events)
|
||||||
.then(function (destination) {
|
.then(function (destination) {
|
||||||
var PlatformApi = require(path.resolve(destination, 'cordova/Api'));
|
var PlatformApi = require(path.resolve(destination, 'cordova/Api'));
|
||||||
return new PlatformApi('android', destination, events);
|
return new PlatformApi('android', destination, events);
|
||||||
@ -220,7 +237,7 @@ Api.prototype.addPlugin = function (plugin, installOptions) {
|
|||||||
.save_all();
|
.save_all();
|
||||||
|
|
||||||
if (plugin.getFrameworks(self.platform).length > 0) {
|
if (plugin.getFrameworks(self.platform).length > 0) {
|
||||||
self.events.emit('verbose', 'Updating build files since android plugin contained <framework>');
|
selfEvents.emit('verbose', 'Updating build files since android plugin contained <framework>');
|
||||||
require('./lib/builders/builders').getBuilder('gradle').prepBuildFiles();
|
require('./lib/builders/builders').getBuilder('gradle').prepBuildFiles();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -278,7 +295,7 @@ Api.prototype.removePlugin = function (plugin, uninstallOptions) {
|
|||||||
.save_all();
|
.save_all();
|
||||||
|
|
||||||
if (plugin.getFrameworks(self.platform).length > 0) {
|
if (plugin.getFrameworks(self.platform).length > 0) {
|
||||||
self.events.emit('verbose', 'Updating build files since android plugin contained <framework>');
|
selfEvents.emit('verbose', 'Updating build files since android plugin contained <framework>');
|
||||||
require('./lib/builders/builders').getBuilder('gradle').prepBuildFiles();
|
require('./lib/builders/builders').getBuilder('gradle').prepBuildFiles();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -41,6 +41,8 @@ var buildOpts = nopt({
|
|||||||
// Make buildOptions compatible with PlatformApi build method spec
|
// Make buildOptions compatible with PlatformApi build method spec
|
||||||
buildOpts.argv = buildOpts.argv.original;
|
buildOpts.argv = buildOpts.argv.original;
|
||||||
|
|
||||||
|
require('./loggingHelper').adjustLoggerLevel(buildOpts);
|
||||||
|
|
||||||
new Api().build(buildOpts)
|
new Api().build(buildOpts)
|
||||||
.catch(function(err) {
|
.catch(function(err) {
|
||||||
console.error(err.stack);
|
console.error(err.stack);
|
||||||
|
@ -21,6 +21,7 @@
|
|||||||
|
|
||||||
var Api = require('./Api');
|
var Api = require('./Api');
|
||||||
var path = require('path');
|
var path = require('path');
|
||||||
|
var nopt = require('nopt');
|
||||||
|
|
||||||
// Support basic help commands
|
// Support basic help commands
|
||||||
if(['--help', '/?', '-h', 'help', '-help', '/help'].indexOf(process.argv[2]) >= 0) {
|
if(['--help', '/?', '-h', 'help', '-help', '/help'].indexOf(process.argv[2]) >= 0) {
|
||||||
@ -29,7 +30,18 @@ if(['--help', '/?', '-h', 'help', '-help', '/help'].indexOf(process.argv[2]) >=
|
|||||||
process.exit(0);
|
process.exit(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
new Api().clean({argv: process.argv.slice(2)})
|
// 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;
|
||||||
|
|
||||||
|
require('./loggingHelper').adjustLoggerLevel(opts);
|
||||||
|
|
||||||
|
new Api().clean(opts)
|
||||||
.catch(function(err) {
|
.catch(function(err) {
|
||||||
console.error(err.stack);
|
console.error(err.stack);
|
||||||
process.exit(2);
|
process.exit(2);
|
||||||
|
75
bin/templates/cordova/lib/ConsoleLogger.js
vendored
75
bin/templates/cordova/lib/ConsoleLogger.js
vendored
@ -1,75 +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 loggerInstance;
|
|
||||||
var util = require('util');
|
|
||||||
var EventEmitter = require('events').EventEmitter;
|
|
||||||
var CordovaError = require('cordova-common').CordovaError;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @class ConsoleLogger
|
|
||||||
* @extends EventEmitter
|
|
||||||
*
|
|
||||||
* Implementing basic logging for platform. Inherits regular NodeJS
|
|
||||||
* EventEmitter. All events, emitted on this class instance are immediately
|
|
||||||
* logged to console.
|
|
||||||
*
|
|
||||||
* Also attaches handler to process' uncaught exceptions, so these exceptions
|
|
||||||
* logged to console similar to regular error events.
|
|
||||||
*/
|
|
||||||
function ConsoleLogger() {
|
|
||||||
EventEmitter.call(this);
|
|
||||||
|
|
||||||
var isVerbose = process.argv.indexOf('-d') >= 0 || process.argv.indexOf('--verbose') >= 0;
|
|
||||||
// For CordovaError print only the message without stack trace unless we
|
|
||||||
// are in a verbose mode.
|
|
||||||
process.on('uncaughtException', function(err){
|
|
||||||
if ((err instanceof CordovaError) && isVerbose) {
|
|
||||||
console.error(err.stack);
|
|
||||||
} else {
|
|
||||||
console.error(err.message);
|
|
||||||
}
|
|
||||||
process.exit(1);
|
|
||||||
});
|
|
||||||
|
|
||||||
this.on('results', console.log);
|
|
||||||
this.on('verbose', function () {
|
|
||||||
if (isVerbose)
|
|
||||||
console.log.apply(console, arguments);
|
|
||||||
});
|
|
||||||
this.on('info', console.log);
|
|
||||||
this.on('log', console.log);
|
|
||||||
this.on('warn', console.warn);
|
|
||||||
}
|
|
||||||
util.inherits(ConsoleLogger, EventEmitter);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns already instantiated/newly created instance of ConsoleLogger class.
|
|
||||||
* This method should be used instead of creating ConsoleLogger directly,
|
|
||||||
* otherwise we'll get multiple handlers attached to process'
|
|
||||||
* uncaughtException
|
|
||||||
*
|
|
||||||
* @return {ConsoleLogger} New or already created instance of ConsoleLogger
|
|
||||||
*/
|
|
||||||
ConsoleLogger.get = function () {
|
|
||||||
loggerInstance = loggerInstance || new ConsoleLogger();
|
|
||||||
return loggerInstance;
|
|
||||||
};
|
|
||||||
|
|
||||||
module.exports = ConsoleLogger;
|
|
5
bin/templates/cordova/lib/build.js
vendored
5
bin/templates/cordova/lib/build.js
vendored
@ -149,17 +149,16 @@ module.exports.runClean = function(options) {
|
|||||||
module.exports.run = function(options, optResolvedTarget) {
|
module.exports.run = function(options, optResolvedTarget) {
|
||||||
var opts = parseOpts(options, optResolvedTarget, this.root);
|
var opts = parseOpts(options, optResolvedTarget, this.root);
|
||||||
var builder = builders.getBuilder(opts.buildMethod);
|
var builder = builders.getBuilder(opts.buildMethod);
|
||||||
var self = this;
|
|
||||||
return builder.prepEnv(opts)
|
return builder.prepEnv(opts)
|
||||||
.then(function() {
|
.then(function() {
|
||||||
if (opts.prepEnv) {
|
if (opts.prepEnv) {
|
||||||
self.events.emit('verbose', 'Build file successfully prepared.');
|
events.emit('verbose', 'Build file successfully prepared.');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
return builder.build(opts)
|
return builder.build(opts)
|
||||||
.then(function() {
|
.then(function() {
|
||||||
var apkPaths = builder.findOutputApks(opts.buildType, opts.arch);
|
var apkPaths = builder.findOutputApks(opts.buildType, opts.arch);
|
||||||
self.events.emit('log', 'Built the following apk(s): \n\t' + apkPaths.join('\n\t'));
|
events.emit('log', 'Built the following apk(s): \n\t' + apkPaths.join('\n\t'));
|
||||||
return {
|
return {
|
||||||
apkPaths: apkPaths,
|
apkPaths: apkPaths,
|
||||||
buildType: opts.buildType,
|
buildType: opts.buildType,
|
||||||
|
2
bin/templates/cordova/lib/prepare.js
vendored
2
bin/templates/cordova/lib/prepare.js
vendored
@ -45,7 +45,7 @@ module.exports.prepare = function (cordovaProject) {
|
|||||||
handleSplashes(cordovaProject.projectConfig, self.root);
|
handleSplashes(cordovaProject.projectConfig, self.root);
|
||||||
})
|
})
|
||||||
.then(function () {
|
.then(function () {
|
||||||
self.events.emit('verbose', 'updated project successfully');
|
events.emit('verbose', 'updated project successfully');
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
7
bin/templates/cordova/lib/run.js
vendored
7
bin/templates/cordova/lib/run.js
vendored
@ -25,7 +25,8 @@ var path = require('path'),
|
|||||||
build = require('./build'),
|
build = require('./build'),
|
||||||
emulator = require('./emulator'),
|
emulator = require('./emulator'),
|
||||||
device = require('./device'),
|
device = require('./device'),
|
||||||
Q = require('q');
|
Q = require('q'),
|
||||||
|
events = require('cordova-common').events;
|
||||||
|
|
||||||
function getInstallTarget(runOptions) {
|
function getInstallTarget(runOptions) {
|
||||||
var install_target;
|
var install_target;
|
||||||
@ -62,10 +63,10 @@ function getInstallTarget(runOptions) {
|
|||||||
return device.list()
|
return device.list()
|
||||||
.then(function(device_list) {
|
.then(function(device_list) {
|
||||||
if (device_list.length > 0) {
|
if (device_list.length > 0) {
|
||||||
self.events.emit('warn', 'No target specified, deploying to device \'' + device_list[0] + '\'.');
|
events.emit('warn', 'No target specified, deploying to device \'' + device_list[0] + '\'.');
|
||||||
install_target = device_list[0];
|
install_target = device_list[0];
|
||||||
} else {
|
} else {
|
||||||
self.events.emit('warn', 'No target specified, deploying to emulator');
|
events.emit('warn', 'No target specified, deploying to emulator');
|
||||||
install_target = '--emulator';
|
install_target = '--emulator';
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
18
bin/templates/cordova/loggingHelper.js
vendored
Normal file
18
bin/templates/cordova/loggingHelper.js
vendored
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
var CordovaLogger = require('cordova-common').CordovaLogger;
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
adjustLoggerLevel: function (opts) {
|
||||||
|
if (opts instanceof Array) {
|
||||||
|
opts.silent = opts.indexOf('--silent') !== -1;
|
||||||
|
opts.verbose = opts.indexOf('--verbose') !== -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (opts.silent) {
|
||||||
|
CordovaLogger.get().setLevel('error');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (opts.verbose) {
|
||||||
|
CordovaLogger.get().setLevel('verbose');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
@ -44,6 +44,8 @@ var runOpts = nopt({
|
|||||||
// Make runOptions compatible with PlatformApi run method spec
|
// Make runOptions compatible with PlatformApi run method spec
|
||||||
runOpts.argv = runOpts.argv.remain;
|
runOpts.argv = runOpts.argv.remain;
|
||||||
|
|
||||||
|
require('./loggingHelper').adjustLoggerLevel(runOpts);
|
||||||
|
|
||||||
new Api().run(runOpts)
|
new Api().run(runOpts)
|
||||||
.catch(function(err) {
|
.catch(function(err) {
|
||||||
console.error(err, err.stack);
|
console.error(err, err.stack);
|
||||||
|
@ -24,7 +24,7 @@ var args = require('nopt')({
|
|||||||
'link': Boolean,
|
'link': Boolean,
|
||||||
'shared': Boolean,
|
'shared': Boolean,
|
||||||
'help': Boolean
|
'help': Boolean
|
||||||
});
|
}, { 'd' : '--verbose' });
|
||||||
|
|
||||||
if (args.help || args.argv.remain.length === 0) {
|
if (args.help || args.argv.remain.length === 0) {
|
||||||
console.log('Usage: ' + path.relative(process.cwd(), path.join(__dirname, 'update')) + ' <path_to_project> [--link]');
|
console.log('Usage: ' + path.relative(process.cwd(), path.join(__dirname, 'update')) + ' <path_to_project> [--link]');
|
||||||
@ -32,4 +32,6 @@ if (args.help || args.argv.remain.length === 0) {
|
|||||||
process.exit(1);
|
process.exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
require('./templates/cordova/loggingHelper').adjustLoggerLevel(args);
|
||||||
|
|
||||||
Api.updatePlatform(args.argv.remain[0], {link: (args.link || args.shared)}).done();
|
Api.updatePlatform(args.argv.remain[0], {link: (args.link || args.shared)}).done();
|
||||||
|
Loading…
Reference in New Issue
Block a user