11import yargs , { Argv , CommandModule } from "yargs" ;
2- import { logger , LogLevel , Log } from "../lib/logger.js" ;
2+ import logger from "../lib/logger.js" ;
33import isCI from "is-ci" ;
44import { ENV_PREFIX , SCRIPT_NAME } from "./constants.js" ;
55import init from "./commands/init.js" ;
@@ -8,8 +8,8 @@ import promote from "./commands/promote.js";
88import status from "./commands/status.js" ;
99import version from "./commands/version.js" ;
1010import { appendFileSync , openSync } from "node:fs" ;
11- import { Chalk , supportsColor } from "chalk" ;
1211import stripAnsi from "strip-ansi" ;
12+ import { Log , LogLevel , formatLog , printLog } from "@eliassko/logger" ;
1313
1414function 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- }
0 commit comments