UNPKG

simple-git

Version:

Simple GIT interface for node.js

114 lines 3.99 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); 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); const kill = ((debugDebugger === null || debugDebugger === void 0 ? void 0 : debugDebugger.destroy) || utils_1.NOOP).bind(debugDebugger); return step(initialStep); function destroy() { kill(); 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