From a92c710298a07dbbce5434c18a504cade47effe4 Mon Sep 17 00:00:00 2001 From: "Mr.Hope" Date: Mon, 29 Jan 2024 13:50:18 +0800 Subject: [PATCH] feat(helper): add logger utils (#35) --- tools/helper/src/node/utils/index.ts | 1 + tools/helper/src/node/utils/logger.ts | 76 +++++++++++++++++++++++++++ 2 files changed, 77 insertions(+) create mode 100644 tools/helper/src/node/utils/logger.ts diff --git a/tools/helper/src/node/utils/index.ts b/tools/helper/src/node/utils/index.ts index 6078a3cffe..a23c966fa1 100644 --- a/tools/helper/src/node/utils/index.ts +++ b/tools/helper/src/node/utils/index.ts @@ -1 +1,2 @@ +export * from './logger.js' export * from './packageManager.js' diff --git a/tools/helper/src/node/utils/logger.ts b/tools/helper/src/node/utils/logger.ts new file mode 100644 index 0000000000..2b278cace3 --- /dev/null +++ b/tools/helper/src/node/utils/logger.ts @@ -0,0 +1,76 @@ +import { colors, ora } from 'vuepress/utils' + +type Ora = ReturnType + +/** + * Logger utils + */ +export class Logger { + constructor( + /** + * Plugin/Theme name + */ + private name = '', + ) {} + + private init(text: string): Ora { + return ora({ + prefixText: colors.blue(`${this.name}: `) || '', + text, + }) + } + + /** + * Create a loading spinner with text + */ + load(text: string): { + succeed: (text?: string) => void + fail: (text?: string) => void + } { + const instance = this.init(text) + + return { + succeed: (text?: string) => instance.succeed(text), + fail: (text?: string) => instance.succeed(text), + } + } + + /** + * Log info msg + * + * @param text Hint text + * @returns Ora Instance + */ + info(text = '', ...args: any[]): void { + this.init(colors.blue(text)).info() + + if (args.length) console.info(...args) + } + + /** + * Log success msg + */ + succeed(text = '', ...args: any[]): void { + this.init(colors.green(text)).succeed() + + if (args.length) console.log(...args) + } + + /** + * Log warning msg + */ + warn(text = '', ...args: any[]): void { + this.init(colors.yellow(text)).warn() + + if (args.length) console.warn(...args) + } + + /** + * Log error msg + */ + error(text = '', ...args: any[]): void { + this.init(colors.red(text)).fail() + + if (args.length) console.error(...args) + } +}