113 lines
3.8 KiB
JavaScript
113 lines
3.8 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.GitLogger = exports.createLogger = exports.log = void 0;
|
|
const debug_1 = require("debug");
|
|
const utils_1 = require("./utils");
|
|
debug_1.default.formatters.L = (value) => String(utils_1.filterHasLength(value) ? value.length : '-');
|
|
debug_1.default.formatters.B = (value) => {
|
|
if (Buffer.isBuffer(value)) {
|
|
return value.toString('utf8');
|
|
}
|
|
return utils_1.objectToString(value);
|
|
};
|
|
/**
|
|
* The shared debug logging instance
|
|
*/
|
|
exports.log = debug_1.default('simple-git');
|
|
function prefixedLogger(to, prefix, forward) {
|
|
if (!prefix || !String(prefix).replace(/\s*/, '')) {
|
|
return !forward ? to : (message, ...args) => {
|
|
to(message, ...args);
|
|
forward(message, ...args);
|
|
};
|
|
}
|
|
return (message, ...args) => {
|
|
to(`%s ${message}`, prefix, ...args);
|
|
if (forward) {
|
|
forward(message, ...args);
|
|
}
|
|
};
|
|
}
|
|
function childLoggerName(name, childDebugger, { namespace: parentNamespace }) {
|
|
if (typeof name === 'string') {
|
|
return name;
|
|
}
|
|
const childNamespace = childDebugger && childDebugger.namespace || '';
|
|
if (childNamespace.startsWith(parentNamespace)) {
|
|
return childNamespace.substr(parentNamespace.length + 1);
|
|
}
|
|
return childNamespace || parentNamespace;
|
|
}
|
|
function createLogger(label, verbose, initialStep, infoDebugger = exports.log) {
|
|
const labelPrefix = label && `[${label}]` || '';
|
|
const spawned = [];
|
|
const debugDebugger = (typeof verbose === 'string') ? infoDebugger.extend(verbose) : verbose;
|
|
const key = childLoggerName(utils_1.filterType(verbose, utils_1.filterString), debugDebugger, infoDebugger);
|
|
return step(initialStep);
|
|
function destroy() {
|
|
spawned.forEach(logger => logger.destroy());
|
|
spawned.length = 0;
|
|
}
|
|
function child(name) {
|
|
return utils_1.append(spawned, createLogger(label, debugDebugger && debugDebugger.extend(name) || name));
|
|
}
|
|
function sibling(name, initial) {
|
|
return utils_1.append(spawned, createLogger(label, key.replace(/^[^:]+/, name), initial, infoDebugger));
|
|
}
|
|
function step(phase) {
|
|
const stepPrefix = phase && `[${phase}]` || '';
|
|
const debug = debugDebugger && prefixedLogger(debugDebugger, stepPrefix) || utils_1.NOOP;
|
|
const info = prefixedLogger(infoDebugger, `${labelPrefix} ${stepPrefix}`, debug);
|
|
return Object.assign(debugDebugger ? debug : info, {
|
|
key,
|
|
label,
|
|
child,
|
|
sibling,
|
|
debug,
|
|
info,
|
|
step,
|
|
destroy,
|
|
});
|
|
}
|
|
}
|
|
exports.createLogger = createLogger;
|
|
/**
|
|
* The `GitLogger` is used by the main `SimpleGit` runner to handle logging
|
|
* any warnings or errors.
|
|
*/
|
|
class GitLogger {
|
|
constructor(_out = exports.log) {
|
|
this._out = _out;
|
|
this.error = prefixedLogger(_out, '[ERROR]');
|
|
this.warn = prefixedLogger(_out, '[WARN]');
|
|
}
|
|
silent(silence = false) {
|
|
if (silence !== this._out.enabled) {
|
|
return;
|
|
}
|
|
const { namespace } = this._out;
|
|
const env = (process.env.DEBUG || '').split(',').filter(s => !!s);
|
|
const hasOn = env.includes(namespace);
|
|
const hasOff = env.includes(`-${namespace}`);
|
|
// enabling the log
|
|
if (!silence) {
|
|
if (hasOff) {
|
|
utils_1.remove(env, `-${namespace}`);
|
|
}
|
|
else {
|
|
env.push(namespace);
|
|
}
|
|
}
|
|
else {
|
|
if (hasOn) {
|
|
utils_1.remove(env, namespace);
|
|
}
|
|
else {
|
|
env.push(`-${namespace}`);
|
|
}
|
|
}
|
|
debug_1.default.enable(env.join(','));
|
|
}
|
|
}
|
|
exports.GitLogger = GitLogger;
|
|
//# sourceMappingURL=git-logger.js.map
|