Use either opts.events or a no-op for logging (§4)
Fixes #23
diff --git a/index.js b/index.js
index 2ddec33..bdff9bf 100644
--- a/index.js
+++ b/index.js
@@ -29,32 +29,11 @@
var validateIdentifier = require('valid-identifier');
var fetch = require('cordova-fetch');
-var events = require('cordova-common').events;
var CordovaError = require('cordova-common').CordovaError;
var ConfigParser = require('cordova-common').ConfigParser;
-var CordovaLogger = require('cordova-common').CordovaLogger.get();
const DEFAULT_VERSION = '1.0.0';
-/**
- * Sets up to forward events to another instance, or log console.
- * This will make the create internal events visible outside
- * @param {EventEmitter} externalEventEmitter An EventEmitter instance that will be used for
- * logging purposes. If no EventEmitter provided, all events will be logged to console
- * @return {EventEmitter}
- */
-function setupEvents (externalEventEmitter) {
- if (externalEventEmitter) {
- // This will make the platform internal events visible outside
- events.forwardEventsTo(externalEventEmitter);
- // There is no logger if external emitter is not present,
- // so attach a console logger
- } else {
- CordovaLogger.subscribe(events);
- }
- return events;
-}
-
module.exports = cordovaCreateLegacyAdapter;
/**
@@ -66,7 +45,7 @@
if (id) opts.id = id;
if (name) opts.name = name;
- if (extEvents) opts.extEvents = extEvents;
+ if (extEvents) opts.events = extEvents;
return cordovaCreate(dir, opts);
}
@@ -79,6 +58,7 @@
* @returns {Promise} Resolves when project creation has finished.
*/
function cordovaCreate (dest, opts = {}) {
+ let emit;
// TODO this is to avoid having a huge diff. Remove later.
let dir = dest;
@@ -94,8 +74,8 @@
// Shallow copy opts
opts = Object.assign({}, opts);
- events = setupEvents(opts.extEvents);
- events.emit('verbose', 'Using detached cordova-create');
+ emit = getEventEmitter(opts);
+ emit('verbose', 'Using detached cordova-create');
// Make absolute.
dir = path.resolve(dir);
@@ -125,7 +105,7 @@
})
.then(function () {
// Finally, Ready to start!
- events.emit('log', 'Creating a new cordova project.');
+ emit('log', 'Creating a new cordova project.');
// If symlink, don't fetch
if (opts.link) {
@@ -135,7 +115,7 @@
// Use cordova-fetch to obtain npm or git templates
if (opts.template && isRemoteUri(opts.url)) {
var target = opts.url;
- events.emit('verbose', 'Using cordova-fetch for ' + target);
+ emit('verbose', 'Using cordova-fetch for ' + target);
return fetch(target, getSelfDestructingTempDir(), {});
} else {
// If assets are not online, resolve as a relative path on local computer
@@ -154,7 +134,7 @@
isSubDir = true;
}
} catch (e) {
- events.emit('verbose', 'index.js does not specify valid sub-directory: ' + input_directory);
+ emit('verbose', 'index.js does not specify valid sub-directory: ' + input_directory);
isSubDir = false;
}
@@ -171,13 +151,13 @@
try {
// Copy files from template to project
if (opts.template) {
- events.emit('verbose', 'Copying assets.');
+ emit('verbose', 'Copying assets.');
copyTemplateFiles(import_from_path, dir, isSubDir);
}
// If --link, link merges, hooks, www, and config.xml (and/or copy to root)
if (opts.link) {
- events.emit('verbose', 'Symlinking assets.');
+ emit('verbose', 'Symlinking assets.');
linkFromTemplate(import_from_path, dir);
}
@@ -237,6 +217,12 @@
});
}
+function getEventEmitter ({ events }) {
+ return events
+ ? (...args) => events.emit(...args)
+ : () => {};
+}
+
/**
* Recursively copies folder to destination if folder is not found in destination (including symlinks).
* @param {string} src for copying
diff --git a/spec/helpers.js b/spec/helpers.js
index bc48248..399f292 100644
--- a/spec/helpers.js
+++ b/spec/helpers.js
@@ -23,10 +23,6 @@
const rewire = require('rewire');
-// Disable regular console output during tests
-const CordovaLogger = require('cordova-common').CordovaLogger;
-CordovaLogger.get().setLevel(CordovaLogger.ERROR);
-
// Temporary directory to use for all tests
const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'cordova-create-tests-'));