1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | exports.GitLogger = exports.createLogger = void 0;
|
4 | const debug_1 = require("debug");
|
5 | const utils_1 = require("./utils");
|
6 | debug_1.default.formatters.L = (value) => String(utils_1.filterHasLength(value) ? value.length : '-');
|
7 | debug_1.default.formatters.B = (value) => {
|
8 | if (Buffer.isBuffer(value)) {
|
9 | return value.toString('utf8');
|
10 | }
|
11 | return utils_1.objectToString(value);
|
12 | };
|
13 | function createLog() {
|
14 | return debug_1.default('simple-git');
|
15 | }
|
16 | function prefixedLogger(to, prefix, forward) {
|
17 | if (!prefix || !String(prefix).replace(/\s*/, '')) {
|
18 | return !forward ? to : (message, ...args) => {
|
19 | to(message, ...args);
|
20 | forward(message, ...args);
|
21 | };
|
22 | }
|
23 | return (message, ...args) => {
|
24 | to(`%s ${message}`, prefix, ...args);
|
25 | if (forward) {
|
26 | forward(message, ...args);
|
27 | }
|
28 | };
|
29 | }
|
30 | function childLoggerName(name, childDebugger, { namespace: parentNamespace }) {
|
31 | if (typeof name === 'string') {
|
32 | return name;
|
33 | }
|
34 | const childNamespace = childDebugger && childDebugger.namespace || '';
|
35 | if (childNamespace.startsWith(parentNamespace)) {
|
36 | return childNamespace.substr(parentNamespace.length + 1);
|
37 | }
|
38 | return childNamespace || parentNamespace;
|
39 | }
|
40 | function createLogger(label, verbose, initialStep, infoDebugger = createLog()) {
|
41 | const labelPrefix = label && `[${label}]` || '';
|
42 | const spawned = [];
|
43 | const debugDebugger = (typeof verbose === 'string') ? infoDebugger.extend(verbose) : verbose;
|
44 | const key = childLoggerName(utils_1.filterType(verbose, utils_1.filterString), debugDebugger, infoDebugger);
|
45 | return step(initialStep);
|
46 | function sibling(name, initial) {
|
47 | return utils_1.append(spawned, createLogger(label, key.replace(/^[^:]+/, name), initial, infoDebugger));
|
48 | }
|
49 | function step(phase) {
|
50 | const stepPrefix = phase && `[${phase}]` || '';
|
51 | const debug = debugDebugger && prefixedLogger(debugDebugger, stepPrefix) || utils_1.NOOP;
|
52 | const info = prefixedLogger(infoDebugger, `${labelPrefix} ${stepPrefix}`, debug);
|
53 | return Object.assign(debugDebugger ? debug : info, {
|
54 | label,
|
55 | sibling,
|
56 | info,
|
57 | step,
|
58 | });
|
59 | }
|
60 | }
|
61 | exports.createLogger = createLogger;
|
62 |
|
63 |
|
64 |
|
65 |
|
66 | class GitLogger {
|
67 | constructor(_out = createLog()) {
|
68 | this._out = _out;
|
69 | this.error = prefixedLogger(_out, '[ERROR]');
|
70 | this.warn = prefixedLogger(_out, '[WARN]');
|
71 | }
|
72 | silent(silence = false) {
|
73 | if (silence !== this._out.enabled) {
|
74 | return;
|
75 | }
|
76 | const { namespace } = this._out;
|
77 | const env = (process.env.DEBUG || '').split(',').filter(s => !!s);
|
78 | const hasOn = env.includes(namespace);
|
79 | const hasOff = env.includes(`-${namespace}`);
|
80 |
|
81 | if (!silence) {
|
82 | if (hasOff) {
|
83 | utils_1.remove(env, `-${namespace}`);
|
84 | }
|
85 | else {
|
86 | env.push(namespace);
|
87 | }
|
88 | }
|
89 | else {
|
90 | if (hasOn) {
|
91 | utils_1.remove(env, namespace);
|
92 | }
|
93 | else {
|
94 | env.push(`-${namespace}`);
|
95 | }
|
96 | }
|
97 | debug_1.default.enable(env.join(','));
|
98 | }
|
99 | }
|
100 | exports.GitLogger = GitLogger;
|
101 |
|
\ | No newline at end of file |