From b49a7989373235aaa49f0e6998e83d8f5b1ccebd Mon Sep 17 00:00:00 2001 From: Krisztian Balla Date: Tue, 10 Aug 2021 21:58:21 +0200 Subject: [PATCH 1/2] Add support for NO_COLOR environment variable --- src/lib/application.ts | 4 ++++ src/lib/utils/loggers.ts | 34 +++++++++++++++++++++++++++++----- 2 files changed, 33 insertions(+), 5 deletions(-) diff --git a/src/lib/application.ts b/src/lib/application.ts index 14ad9c396..231b3ed56 100644 --- a/src/lib/application.ts +++ b/src/lib/application.ts @@ -222,6 +222,10 @@ export class Application extends ChildableComponent< super(DUMMY_APPLICATION_OWNER); this.logger = new ConsoleLogger(); + if (this.logger instanceof ConsoleLogger && "NO_COLOR" in process.env) { + this.logger.usesColors = false; + } + this.options = new Options(this.logger); this.options.addDefaultDeclarations(); this.serializer = new Serializer(); diff --git a/src/lib/utils/loggers.ts b/src/lib/utils/loggers.ts index bada41b22..71db124f1 100644 --- a/src/lib/utils/loggers.ts +++ b/src/lib/utils/loggers.ts @@ -25,10 +25,25 @@ const Colors = { }; const messagePrefixes = { - [LogLevel.Error]: `${Colors.red}Error: ${Colors.reset}`, - [LogLevel.Warn]: `${Colors.yellow}Warning: ${Colors.reset}`, - [LogLevel.Info]: `${Colors.cyan}Info: ${Colors.reset}`, - [LogLevel.Verbose]: `${Colors.gray}Debug: ${Colors.reset}`, + [LogLevel.Error]: "Error: ", + [LogLevel.Warn]: "Warning: ", + [LogLevel.Info]: "Info: ", + [LogLevel.Verbose]: "Debug: ", +}; + +const coloredMessagePrefixes = { + [LogLevel.Error]: `${Colors.red}${messagePrefixes[LogLevel.Error]}${ + Colors.reset + }`, + [LogLevel.Warn]: `${Colors.yellow}${messagePrefixes[LogLevel.Warn]}${ + Colors.reset + }`, + [LogLevel.Info]: `${Colors.cyan}${messagePrefixes[LogLevel.Info]}${ + Colors.reset + }`, + [LogLevel.Verbose]: `${Colors.gray}${messagePrefixes[LogLevel.Verbose]}${ + Colors.reset + }`, }; /** @@ -235,6 +250,11 @@ export class Logger { * A logger that outputs all messages to the console. */ export class ConsoleLogger extends Logger { + /** + * Specifies if the logger is using color codes in its output. + */ + usesColors = true; + /** * Print a log message. * @@ -256,7 +276,11 @@ export class ConsoleLogger extends Logger { } as const )[level]; - console[method](messagePrefixes[level] + message); + const prefix = this.usesColors + ? coloredMessagePrefixes[level] + : messagePrefixes[level]; + + console[method](prefix + message); } } From 5c6d28c3e208c942ff17e5ce88f2a08c97c10be9 Mon Sep 17 00:00:00 2001 From: Krisztian Balla Date: Sat, 14 Aug 2021 12:06:59 +0200 Subject: [PATCH 2/2] Make color flag private --- src/lib/application.ts | 4 ---- src/lib/utils/loggers.ts | 12 ++++++++++-- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/lib/application.ts b/src/lib/application.ts index 231b3ed56..14ad9c396 100644 --- a/src/lib/application.ts +++ b/src/lib/application.ts @@ -222,10 +222,6 @@ export class Application extends ChildableComponent< super(DUMMY_APPLICATION_OWNER); this.logger = new ConsoleLogger(); - if (this.logger instanceof ConsoleLogger && "NO_COLOR" in process.env) { - this.logger.usesColors = false; - } - this.options = new Options(this.logger); this.options.addDefaultDeclarations(); this.serializer = new Serializer(); diff --git a/src/lib/utils/loggers.ts b/src/lib/utils/loggers.ts index 71db124f1..81dfffa6b 100644 --- a/src/lib/utils/loggers.ts +++ b/src/lib/utils/loggers.ts @@ -253,7 +253,15 @@ export class ConsoleLogger extends Logger { /** * Specifies if the logger is using color codes in its output. */ - usesColors = true; + private hasColoredOutput: boolean; + + /** + * Create a new ConsoleLogger instance. + */ + constructor() { + super(); + this.hasColoredOutput = !("NO_COLOR" in process.env); + } /** * Print a log message. @@ -276,7 +284,7 @@ export class ConsoleLogger extends Logger { } as const )[level]; - const prefix = this.usesColors + const prefix = this.hasColoredOutput ? coloredMessagePrefixes[level] : messagePrefixes[level];