Skip to content

Commit 7327563

Browse files
committed
fix: update logger library
1 parent 8b9d468 commit 7327563

File tree

14 files changed

+54
-193
lines changed

14 files changed

+54
-193
lines changed

package-lock.json

Lines changed: 23 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@
4747
"version": "node ./dist/cli/main.js version"
4848
},
4949
"dependencies": {
50+
"@eliassko/logger": "^1.0.2",
5051
"@manypkg/get-packages": "^2.2.1",
5152
"conventional-commits-parser": "^6.0.0",
5253
"detect-indent": "^7.0.1",
@@ -86,8 +87,7 @@
8687
"typescript-eslint": "^7.13.0",
8788
"yargs": "^17.7.2"
8889
},
89-
"publishConfig": {
90-
},
90+
"publishConfig": {},
9191
"overrides": {
9292
"eslint": "$eslint"
9393
}

src/cli/cli.ts

Lines changed: 13 additions & 84 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import yargs, { Argv, CommandModule } from "yargs";
2-
import { logger, LogLevel, Log } from "../lib/logger.js";
2+
import logger from "../lib/logger.js";
33
import isCI from "is-ci";
44
import { ENV_PREFIX, SCRIPT_NAME } from "./constants.js";
55
import init from "./commands/init.js";
@@ -8,8 +8,8 @@ import promote from "./commands/promote.js";
88
import status from "./commands/status.js";
99
import version from "./commands/version.js";
1010
import { appendFileSync, openSync } from "node:fs";
11-
import { Chalk, supportsColor } from "chalk";
1211
import stripAnsi from "strip-ansi";
12+
import { Log, LogLevel, formatLog, printLog } from "@eliassko/logger";
1313

1414
function createCLI(argv: string[]) {
1515
const cli = yargs(argv);
@@ -138,21 +138,16 @@ function createCLI(argv: string[]) {
138138
);
139139

140140
// Avoid throwing errors.
141-
logger.exitGracefully = true;
141+
logger.throw = false;
142142

143143
// Pipe logger to console
144-
logger
145-
.clone()
146-
.pipe(createLogFormatter({ colorize: true }))
147-
.pipe(createLogWriter(logLevel));
144+
logger.onLog((log) => printLog(formatLog(log)), logLevel);
148145

149146
// Pipe logger to debug log
150147
if (args.debugFile) {
151-
logger
152-
.clone()
153-
.pipe(createLogFormatter())
154-
.pipe(createLogUncolorizer())
155-
.pipe(createLogFileWriter("conver.debug.log", LogLevel.Debug));
148+
const writeLog = createLogWriter("conver.debug.log");
149+
150+
logger.onLog((log) => writeLog(uncolorizeLog(formatLog(log))));
156151
}
157152

158153
if (args.force) {
@@ -221,84 +216,18 @@ function toLogLevel(value: string): LogLevel {
221216
}
222217
}
223218

224-
interface FormatLogOptions {
225-
colorize?: boolean | undefined;
226-
}
227-
228-
function createLogFormatter(options?: FormatLogOptions) {
229-
return (log: Log): Log => {
230-
const chalk = new Chalk({
231-
level: options?.colorize && supportsColor ? supportsColor.level : 0,
232-
});
233-
234-
let text = log.text;
235-
236-
switch (log.level) {
237-
case LogLevel.Debug:
238-
text = chalk.dim(applyLinePrefix(text, "[DBUG] "));
239-
break;
240-
241-
case LogLevel.Verbose:
242-
text = chalk.dim(applyLinePrefix(text, "[VERB] "));
243-
break;
244-
245-
case LogLevel.Info:
246-
text = applyLinePrefix(text, chalk.blue("[INFO] "));
247-
break;
248-
249-
case LogLevel.Warning:
250-
text = applyLinePrefix(text, chalk.yellow("[WARN] "));
251-
break;
252-
253-
case LogLevel.Error:
254-
text = applyLinePrefix(text, chalk.red("[ERR!] "));
255-
break;
256-
}
257-
258-
return {
259-
...log,
260-
text,
261-
};
219+
function uncolorizeLog(log: Log): Log {
220+
const text = stripAnsi(log.text);
221+
return {
222+
...log,
223+
text,
262224
};
263-
264-
function applyLinePrefix(text: string, prefix: string) {
265-
return text
266-
.split("\n")
267-
.map((line) => prefix + line)
268-
.join("\n");
269-
}
270225
}
271226

272-
function createLogUncolorizer() {
273-
return (log: Log): Log => {
274-
const text = stripAnsi(log.text);
275-
return {
276-
...log,
277-
text,
278-
};
279-
};
280-
}
281-
282-
function createLogFileWriter(path: string, level: LogLevel) {
227+
function createLogWriter(path: string) {
283228
const fd = openSync(path, "w");
284229

285230
return (log: Log): void => {
286-
if (log.level > level) {
287-
return;
288-
}
289-
290231
appendFileSync(fd, log.text + "\n");
291232
};
292233
}
293-
294-
function createLogWriter(level: LogLevel) {
295-
return (log: Log): void => {
296-
if (log.level > level) {
297-
return;
298-
}
299-
300-
const stream =
301-
log.level <= LogLevel.Warning ? process.stderr : process.stdout;
302-
stream.write(log.text + "\n");
303-
};
304-
}

src/cli/commands/init.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { writeFile } from "node:fs/promises";
22
import { declareCommand } from "../cli.js";
33
import { existsSync } from "node:fs";
4-
import { logger } from "../../lib/logger.js";
4+
import logger from "../../lib/logger.js";
55
import { ExecaError } from "execa";
66
import enquirer from "enquirer";
77
import isTTY from "../../lib/utils/is-tty.js";

src/cli/commands/pre.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { SemVer } from "semver";
22
import { declareCommand } from "../cli.js";
33
import enquirer from "enquirer";
44
import isTTY from "../../lib/utils/is-tty.js";
5-
import { logger } from "../../lib/logger.js";
5+
import logger from "../../lib/logger.js";
66
import { isPreRelease } from "../../lib/utils/version.js";
77
import { getWorkspace } from "../../lib/workspace.js";
88
import { join } from "node:path";

src/cli/commands/promote.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import isTTY from "../../lib/utils/is-tty.js";
2-
import { logger } from "../../lib/logger.js";
2+
import logger from "../../lib/logger.js";
33
import { renderList } from "../../lib/utils/tui.js";
44
import { getWorkspace } from "../../lib/workspace.js";
55
import { declareCommand } from "../cli.js";

src/cli/commands/status.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import chalk from "chalk";
22
import { declareCommand } from "../cli.js";
3-
import { logger } from "../../lib/logger.js";
3+
import logger from "../../lib/logger.js";
44
import { renderTable, renderVersioning } from "../../lib/utils/tui.js";
55
import { createVersioningPlan } from "../../lib/versioning.js";
66
import { getWorkspace } from "../../lib/workspace.js";

src/cli/commands/version.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import chalk from "chalk";
1010
import { renderVersioning } from "../../lib/utils/tui.js";
1111
import enquirer from "enquirer";
1212
import isTTY from "../../lib/utils/is-tty.js";
13-
import { logger } from "../../lib/logger.js";
13+
import logger from "../../lib/logger.js";
1414
import {
1515
JSONCEdit,
1616
modifyJsoncFile,

src/lib/history.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { CommitParser as ConventionalCommitsParser } from "conventional-commits-parser";
22
import { createGit } from "./utils/git.js";
3-
import { logger } from "./logger.js";
3+
import logger from "./logger.js";
44
import { ExecaError } from "execa";
55
import { renderCommitList } from "./utils/tui.js";
66
import { Options } from "./options.js";

src/lib/logger.ts

Lines changed: 8 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -1,59 +1,16 @@
1-
import { inspect } from "node:util";
2-
import Pipeline from "./utils/pipeline.js";
1+
import { Logger } from "@eliassko/logger";
32

4-
export enum LogLevel {
5-
Silent = 0,
6-
Error,
7-
Warning,
8-
Info,
9-
Verbose,
10-
Debug,
11-
}
12-
13-
export interface Log {
14-
text: string;
15-
level: LogLevel;
16-
}
17-
18-
export class Logger extends Pipeline<Log> {
19-
exitGracefully = false;
20-
21-
debug(...data: unknown[]) {
22-
return this.write({ text: format(data), level: LogLevel.Debug });
23-
}
3+
export class CustomLogger extends Logger {
4+
throw = true;
245

25-
verbose(...data: unknown[]) {
26-
return this.write({ text: format(data), level: LogLevel.Verbose });
27-
}
28-
29-
info(text: string) {
30-
return this.write({ text, level: LogLevel.Info });
31-
}
32-
33-
warn(text: string) {
34-
return this.write({ text, level: LogLevel.Warning });
35-
}
36-
37-
error(text: string) {
38-
return this.write({ text, level: LogLevel.Error });
39-
}
40-
41-
fatal(text: string): never {
6+
override fatal(text: string): never {
427
this.error(text);
43-
44-
if (this.exitGracefully) {
45-
process.exit(1);
46-
} else {
47-
process.stderr.write("\n");
8+
if (this.throw) {
489
throw new Error(text);
10+
} else {
11+
process.exit(1);
4912
}
5013
}
5114
}
5215

53-
function format(data: unknown[]) {
54-
return data
55-
.map((object) => (typeof object === "string" ? object : inspect(object)))
56-
.join(" ");
57-
}
58-
59-
export const logger = new Logger();
16+
export default new CustomLogger();

0 commit comments

Comments
 (0)