136 lines
3.6 KiB
JavaScript
136 lines
3.6 KiB
JavaScript
|
'use strict';
|
||
|
|
||
|
var messages = require('@gulpjs/messages');
|
||
|
|
||
|
/* istanbul ignore next */
|
||
|
function noop() {}
|
||
|
|
||
|
function toConsole(log, opts, translate) {
|
||
|
// Return immediately if logging is
|
||
|
// not desired.
|
||
|
if (opts.tasksSimple || opts.tasksJson || opts.help || opts.version || opts.silent) {
|
||
|
// Keep from crashing process when silent.
|
||
|
log.on('error', noop);
|
||
|
return function () {
|
||
|
log.removeListener('error', noop);
|
||
|
};
|
||
|
}
|
||
|
|
||
|
// Default loglevel to info level (3).
|
||
|
var loglevel = opts.logLevel || 3;
|
||
|
|
||
|
var deprecatedPrinted = false;
|
||
|
log.on('deprecated', onDeprecated);
|
||
|
|
||
|
// -L: Logs error events.
|
||
|
if (loglevel > 0) {
|
||
|
log.on('error', onError);
|
||
|
}
|
||
|
|
||
|
// -LL: Logs warn and error events.
|
||
|
if (loglevel > 1) {
|
||
|
log.on('warn', onWarn);
|
||
|
}
|
||
|
|
||
|
// -LLL: Logs info, warn and error events.
|
||
|
if (loglevel > 2) {
|
||
|
log.on('info', onInfo);
|
||
|
}
|
||
|
|
||
|
if (loglevel > 3) {
|
||
|
log.on('debug', onDebug);
|
||
|
}
|
||
|
|
||
|
return function () {
|
||
|
log.removeListener('deprecated', onDeprecated);
|
||
|
log.removeListener('error', onError);
|
||
|
log.removeListener('warn', onWarn);
|
||
|
log.removeListener('info', onInfo);
|
||
|
log.removeListener('debug', onDebug);
|
||
|
};
|
||
|
|
||
|
function onDeprecated() {
|
||
|
if (!deprecatedPrinted) {
|
||
|
var msg = { tag: messages.GULPLOG_DEPRECATED };
|
||
|
// Get message and timestamp before printing anything to avoid
|
||
|
// logging a half message if there's an error in one of them
|
||
|
var message = translate.message(msg);
|
||
|
var timestamp = translate.timestamp(msg);
|
||
|
|
||
|
if (message) {
|
||
|
// Ensure timestamp is not written without a message
|
||
|
if (timestamp) {
|
||
|
process.stderr.write(timestamp + ' ');
|
||
|
}
|
||
|
console.error(message);
|
||
|
}
|
||
|
|
||
|
deprecatedPrinted = true;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function onError(msg) {
|
||
|
// Get message and timestamp before printing anything to avoid
|
||
|
// logging a half message if there's an error in one of them
|
||
|
var message = translate.message(msg);
|
||
|
var timestamp = translate.timestamp(msg);
|
||
|
|
||
|
if (message) {
|
||
|
// Ensure timestamp is not written without a message
|
||
|
if (timestamp) {
|
||
|
process.stderr.write(timestamp + ' ');
|
||
|
}
|
||
|
console.error(message);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// onWarn, onInfo, and onDebug are currently all the same
|
||
|
// implementation but separated to change independently
|
||
|
function onWarn(msg) {
|
||
|
// Get message and timestamp before printing anything to avoid
|
||
|
// logging a half message if there's an error in one of them
|
||
|
var message = translate.message(msg);
|
||
|
var timestamp = translate.timestamp(msg);
|
||
|
|
||
|
if (message) {
|
||
|
// Ensure timestamp is not written without a message
|
||
|
if (timestamp) {
|
||
|
process.stdout.write(timestamp + ' ');
|
||
|
}
|
||
|
console.log(message);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function onInfo(msg) {
|
||
|
// Get message and timestamp before printing anything to avoid
|
||
|
// logging a half message if there's an error in one of them
|
||
|
var message = translate.message(msg);
|
||
|
var timestamp = translate.timestamp(msg);
|
||
|
|
||
|
if (message) {
|
||
|
// Ensure timestamp is not written without a message
|
||
|
if (timestamp) {
|
||
|
process.stdout.write(timestamp + ' ');
|
||
|
}
|
||
|
console.log(message);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function onDebug(msg) {
|
||
|
// Get message and timestamp before printing anything to avoid
|
||
|
// logging a half message if there's an error in one of them
|
||
|
var message = translate.message(msg);
|
||
|
var timestamp = translate.timestamp(msg);
|
||
|
|
||
|
if (message) {
|
||
|
// Ensure timestamp is not written without a message
|
||
|
if (timestamp) {
|
||
|
process.stdout.write(timestamp + ' ');
|
||
|
}
|
||
|
console.log(message);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
module.exports = toConsole;
|