CB-10840 Use cordova-common.CordovaLogger in cordova-ios Removed unused events parameter from Plugman ctor
Project: http://git-wip-us.apache.org/repos/asf/cordova-ios/repo Commit: http://git-wip-us.apache.org/repos/asf/cordova-ios/commit/036765d3 Tree: http://git-wip-us.apache.org/repos/asf/cordova-ios/tree/036765d3 Diff: http://git-wip-us.apache.org/repos/asf/cordova-ios/diff/036765d3 Branch: refs/heads/4.1.x Commit: 036765d326b24c14a3cae16a5c56646dae86d7c4 Parents: 4c95f64 Author: daserge <[email protected]> Authored: Fri Mar 11 16:07:43 2016 +0300 Committer: daserge <[email protected]> Committed: Mon Mar 14 14:57:10 2016 +0300 ---------------------------------------------------------------------- bin/create | 4 +- bin/lib/create.js | 7 +- bin/templates/scripts/cordova/Api.js | 31 +++++--- bin/templates/scripts/cordova/build | 4 +- bin/templates/scripts/cordova/clean | 16 ++++- .../scripts/cordova/lib/ConsoleLogger.js | 75 -------------------- .../scripts/cordova/lib/plugman/Plugman.js | 7 +- bin/templates/scripts/cordova/lib/prepare.js | 2 +- bin/templates/scripts/cordova/loggingHelper.js | 11 +++ bin/templates/scripts/cordova/run | 4 +- bin/update | 4 +- 11 files changed, 68 insertions(+), 97 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/036765d3/bin/create ---------------------------------------------------------------------- diff --git a/bin/create b/bin/create index 95f12a7..af13d6b 100755 --- a/bin/create +++ b/bin/create @@ -38,7 +38,7 @@ var argv = require('nopt')({ 'cli' : Boolean, 'shared' : Boolean, // alias for --link 'link' : Boolean -}); +}, { 'd' : '--verbose' }); var projectPath = argv.argv.remain[0]; @@ -66,4 +66,6 @@ var options = { customTemplate: argv.argv.remain[3], }; +require('./templates/scripts/cordova/loggingHelper').adjustLoggerLevel(argv); + Api.createPlatform(projectPath, config, options).done(); http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/036765d3/bin/lib/create.js ---------------------------------------------------------------------- diff --git a/bin/lib/create.js b/bin/lib/create.js index 530ef9d..3aadba8 100755 --- a/bin/lib/create.js +++ b/bin/lib/create.js @@ -24,7 +24,8 @@ var shell = require('shelljs'), path = require('path'), fs = require('fs'), plist = require('plist'), - ROOT = path.join(__dirname, '..', '..'); + ROOT = path.join(__dirname, '..', '..'), + events = require('cordova-common').events; function updateSubprojectHelp() { console.log('Updates the subproject path of the CordovaLib entry to point to this script\'s version of Cordova.'); @@ -188,7 +189,7 @@ function relpath(_path, start) { * - <project_template_dir>: Path to a project template (override) * */ -exports.createProject = function(project_path, package_name, project_name, opts, events) { +exports.createProject = function(project_path, package_name, project_name, opts) { package_name = package_name || 'my.cordova.project'; project_name = project_name || 'CordovaExample'; var use_shared = !!opts.link; @@ -221,7 +222,7 @@ exports.createProject = function(project_path, package_name, project_name, opts, return Q.resolve(); }; -exports.updateProject = function(projectPath, opts, events) { +exports.updateProject = function(projectPath, opts) { var projectName = detectProjectName(projectPath); var project_template_dir = path.join(ROOT, 'bin', 'templates', 'project'); //Get package_name from existing projectName-Info.plist file http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/036765d3/bin/templates/scripts/cordova/Api.js ---------------------------------------------------------------------- diff --git a/bin/templates/scripts/cordova/Api.js b/bin/templates/scripts/cordova/Api.js index 0c5b16d..a51d93b 100644 --- a/bin/templates/scripts/cordova/Api.js +++ b/bin/templates/scripts/cordova/Api.js @@ -23,7 +23,19 @@ var fs = require('fs'); var path = require('path'); var CordovaError = require('cordova-common').CordovaError; -var ConsoleLogger = require('./lib/ConsoleLogger'); +var CordovaLogger = require('cordova-common').CordovaLogger; +var events = require('cordova-common').events; + +function setupEvents(externalEventEmitter) { + if (externalEventEmitter) { + // This will make the platform internal events visible outside + events.forwardEventsTo(externalEventEmitter); + } else { + // There is no logger if external emitter is not present, + // so attach a console logger + CordovaLogger.get().subscribe(events); + } +} /** * Creates a new PlatformApi instance. @@ -41,9 +53,8 @@ function Api(platform, platformRootDir, events) { this.platform = platform || 'ios'; this.root = platformRootDir || path.resolve(__dirname, '..'); - this.events = events || ConsoleLogger.get(); - // NOTE: trick to share one EventEmitter instance across all js code - require('cordova-common').events = this.events; + + setupEvents(events); var xcodeProjDir; var xcodeCordovaProj; @@ -95,8 +106,10 @@ function Api(platform, platformRootDir, events) { * instance or rejected with CordovaError. */ Api.createPlatform = function (destination, config, options, events) { + setupEvents(events); + return require('../../../lib/create') - .createProject(destination, config.packageName(), config.name(), options, events || ConsoleLogger.get()) + .createProject(destination, config.packageName(), config.name(), options) .then(function () { // after platform is created we return Api instance based on new Api.js location // This is required to correctly resolve paths in the future api calls @@ -122,8 +135,10 @@ Api.createPlatform = function (destination, config, options, events) { * instance or rejected with CordovaError. */ Api.updatePlatform = function (destination, options, events) { + setupEvents(events); + return require('../../../lib/create') - .updateProject(destination, options, events || ConsoleLogger.get()) + .updateProject(destination, options) .then(function () { var PlatformApi = require(path.resolve(destination, 'cordova/Api')); return new PlatformApi('ios', destination, events); @@ -184,7 +199,7 @@ Api.prototype.prepare = function (cordovaProject) { */ Api.prototype.addPlugin = function (plugin, installOptions) { var Plugman = require('./lib/plugman/Plugman'); - return Plugman.get(this.locations, this.events).addPlugin(plugin, installOptions); + return Plugman.get(this.locations).addPlugin(plugin, installOptions); }; /** @@ -202,7 +217,7 @@ Api.prototype.addPlugin = function (plugin, installOptions) { */ Api.prototype.removePlugin = function (plugin, uninstallOptions) { var Plugman = require('./lib/plugman/Plugman'); - return Plugman.get(this.locations, this.events).removePlugin(plugin, uninstallOptions); + return Plugman.get(this.locations).removePlugin(plugin, uninstallOptions); }; /** http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/036765d3/bin/templates/scripts/cordova/build ---------------------------------------------------------------------- diff --git a/bin/templates/scripts/cordova/build b/bin/templates/scripts/cordova/build index d611709..be7a5d2 100755 --- a/bin/templates/scripts/cordova/build +++ b/bin/templates/scripts/cordova/build @@ -44,11 +44,13 @@ var buildOpts = nopt({ 'provisioningProfile': String, 'buildConfig' : String, 'noSign' : Boolean -}, {'-r': '--release'}, args); +}, { '-r': '--release', 'd' : '--verbose' }, args); // Make buildOptions compatible with PlatformApi build method spec buildOpts.argv = buildOpts.argv.remain; +require('./loggingHelper').adjustLoggerLevel(buildOpts); + new Api().build(buildOpts).done(function() { console.log('** BUILD SUCCEEDED **'); }, function(err) { http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/036765d3/bin/templates/scripts/cordova/clean ---------------------------------------------------------------------- diff --git a/bin/templates/scripts/cordova/clean b/bin/templates/scripts/cordova/clean index 1ca371c..8f7d303 100755 --- a/bin/templates/scripts/cordova/clean +++ b/bin/templates/scripts/cordova/clean @@ -21,15 +21,27 @@ var Api = require('./Api'); var path = require('path'); +var nopt = require('nopt'); if(['--help', '/?', '-h', 'help', '-help', '/help'].indexOf(process.argv[2]) >= 0) { console.log('Cleans the project directory.'); process.exit(0); } -new Api().clean({argv: process.argv.slice(2)}).done(function() { +// 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).done(function() { console.log('** CLEAN SUCCEEDED **'); -},function(err) { +}, function(err) { console.error(err); process.exit(2); }); http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/036765d3/bin/templates/scripts/cordova/lib/ConsoleLogger.js ---------------------------------------------------------------------- diff --git a/bin/templates/scripts/cordova/lib/ConsoleLogger.js b/bin/templates/scripts/cordova/lib/ConsoleLogger.js deleted file mode 100644 index cee2dc1..0000000 --- a/bin/templates/scripts/cordova/lib/ConsoleLogger.js +++ /dev/null @@ -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; http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/036765d3/bin/templates/scripts/cordova/lib/plugman/Plugman.js ---------------------------------------------------------------------- diff --git a/bin/templates/scripts/cordova/lib/plugman/Plugman.js b/bin/templates/scripts/cordova/lib/plugman/Plugman.js index 8c7b115..5855e9e 100644 --- a/bin/templates/scripts/cordova/lib/plugman/Plugman.js +++ b/bin/templates/scripts/cordova/lib/plugman/Plugman.js @@ -31,9 +31,8 @@ var configMunger = require('../configMunger'); var projectFile = require('../projectFile'); var pluginHandlers = require('./pluginHandlers'); -function Plugman(locations, events) { +function Plugman(locations) { this.locations = locations; - this.events = events; this._munger = configMunger.get(this.locations.root); this._platformJson = this._munger.platformJson; @@ -43,10 +42,10 @@ function Plugman(locations, events) { // shared Plugman instance var _instance = null; -Plugman.get = function(locations, events) { +Plugman.get = function(locations) { if (!_instance) { - _instance = new Plugman(locations, events); + _instance = new Plugman(locations); } // we use singleton Plugman instance so we don't inistantiate all helper classes // for each plugin add or rm http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/036765d3/bin/templates/scripts/cordova/lib/prepare.js ---------------------------------------------------------------------- diff --git a/bin/templates/scripts/cordova/lib/prepare.js b/bin/templates/scripts/cordova/lib/prepare.js index 1e90f8e..0bdda47 100644 --- a/bin/templates/scripts/cordova/lib/prepare.js +++ b/bin/templates/scripts/cordova/lib/prepare.js @@ -51,7 +51,7 @@ module.exports.prepare = function (cordovaProject) { handleSplashScreens(cordovaProject.projectConfig, self.locations.xcodeCordovaProj); }) .then(function () { - self.events.emit('verbose', 'updated project successfully'); + events.emit('verbose', 'updated project successfully'); }); }; http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/036765d3/bin/templates/scripts/cordova/loggingHelper.js ---------------------------------------------------------------------- diff --git a/bin/templates/scripts/cordova/loggingHelper.js b/bin/templates/scripts/cordova/loggingHelper.js new file mode 100644 index 0000000..3d28362 --- /dev/null +++ b/bin/templates/scripts/cordova/loggingHelper.js @@ -0,0 +1,11 @@ +var CordovaLogger = require('cordova-common').CordovaLogger; + +module.exports = { + adjustLoggerLevel: function (opts) { + if (opts.verbose || (Array.isArray(opts) && opts.indexOf('--verbose') !== -1)) { + CordovaLogger.get().setLevel('verbose'); + } else if (opts.silent || (Array.isArray(opts) && opts.indexOf('--silent') !== -1)) { + CordovaLogger.get().setLevel('error'); + } + } +}; http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/036765d3/bin/templates/scripts/cordova/run ---------------------------------------------------------------------- diff --git a/bin/templates/scripts/cordova/run b/bin/templates/scripts/cordova/run index 46a3342..470384b 100755 --- a/bin/templates/scripts/cordova/run +++ b/bin/templates/scripts/cordova/run @@ -47,11 +47,13 @@ var opts = nopt({ 'provisioningProfile': String, 'buildConfig' : String, 'noSign' : Boolean -}, {}, args); +}, { 'd' : '--verbose' }, args); // Make options compatible with PlatformApi build method spec opts.argv = opts.argv.remain; +require('./loggingHelper').adjustLoggerLevel(opts); + new Api().run(opts).done(function() { console.log('** RUN SUCCEEDED **'); }, function (err) { http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/036765d3/bin/update ---------------------------------------------------------------------- diff --git a/bin/update b/bin/update index 33fac6e..d68f918 100755 --- a/bin/update +++ b/bin/update @@ -25,11 +25,13 @@ var args = require('nopt')({ 'link': Boolean, 'shared': Boolean, // alias for --link 'help': Boolean -}); +}, { 'd' : '--verbose' }); if (args.help || args.argv.remain.length === 0) { console.log('Usage: ' + path.relative(process.cwd(), path.join(__dirname, 'update')) + ' <path_to_project> [--link]'); process.exit(0); } +require('./templates/scripts/cordova/loggingHelper').adjustLoggerLevel(args); + Api.updatePlatform(args.argv.remain[0], {link: (args.link || args.shared)}).done(); --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
