You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
92 lines
2.1 KiB
92 lines
2.1 KiB
'use strict'; |
|
|
|
var Console = require('console').Console; |
|
var gray = require('ansi-gray'); |
|
var timestamp = require('time-stamp'); |
|
var supportsColor = require('color-support'); |
|
var nodeVersion = require('parse-node-version')(process.version); |
|
|
|
var colorDetectionOptions = { |
|
// If on Windows, ignore the isTTY check |
|
// This is due to AppVeyor (and thus probably common Windows platforms?) failing the check |
|
// TODO: If this is too broad, we can reduce it to an APPVEYOR env check |
|
ignoreTTY: (process.platform === 'win32'), |
|
}; |
|
|
|
// Needed to add this because node 10 decided to start coloring log output randomly |
|
var console; |
|
if (nodeVersion.major >= 10) { |
|
// Node 10 also changed the way this is constructed |
|
console = new Console({ |
|
stdout: process.stdout, |
|
stderr: process.stderr, |
|
colorMode: false, |
|
}); |
|
} else { |
|
console = new Console(process.stdout, process.stderr); |
|
} |
|
|
|
function hasFlag(flag) { |
|
return (process.argv.indexOf('--' + flag) !== -1); |
|
} |
|
|
|
function addColor(str) { |
|
if (hasFlag('no-color')) { |
|
return str; |
|
} |
|
|
|
if (hasFlag('color')) { |
|
return gray(str); |
|
} |
|
|
|
if (supportsColor(colorDetectionOptions)) { |
|
return gray(str); |
|
} |
|
|
|
return str; |
|
} |
|
|
|
function getTimestamp() { |
|
return '[' + addColor(timestamp('HH:mm:ss')) + ']'; |
|
} |
|
|
|
function log() { |
|
var time = getTimestamp(); |
|
process.stdout.write(time + ' '); |
|
console.log.apply(console, arguments); |
|
return this; |
|
} |
|
|
|
function info() { |
|
var time = getTimestamp(); |
|
process.stdout.write(time + ' '); |
|
console.info.apply(console, arguments); |
|
return this; |
|
} |
|
|
|
function dir() { |
|
var time = getTimestamp(); |
|
process.stdout.write(time + ' '); |
|
console.dir.apply(console, arguments); |
|
return this; |
|
} |
|
|
|
function warn() { |
|
var time = getTimestamp(); |
|
process.stderr.write(time + ' '); |
|
console.warn.apply(console, arguments); |
|
return this; |
|
} |
|
|
|
function error() { |
|
var time = getTimestamp(); |
|
process.stderr.write(time + ' '); |
|
console.error.apply(console, arguments); |
|
return this; |
|
} |
|
|
|
module.exports = log; |
|
module.exports.info = info; |
|
module.exports.dir = dir; |
|
module.exports.warn = warn; |
|
module.exports.error = error;
|
|
|