diff options
Diffstat (limited to 'packages/turbo-workspaces/src/logger.ts')
| -rw-r--r-- | packages/turbo-workspaces/src/logger.ts | 109 |
1 files changed, 109 insertions, 0 deletions
diff --git a/packages/turbo-workspaces/src/logger.ts b/packages/turbo-workspaces/src/logger.ts new file mode 100644 index 0000000..222c89a --- /dev/null +++ b/packages/turbo-workspaces/src/logger.ts @@ -0,0 +1,109 @@ +import chalk from "chalk"; +import gradient from "gradient-string"; + +const INDENTATION = 2; + +export class Logger { + interactive: boolean; + dry: boolean; + step: number; + + constructor({ + interactive, + dry, + }: { interactive?: boolean; dry?: boolean } = {}) { + this.interactive = interactive ?? true; + this.dry = dry ?? false; + this.step = 1; + } + + logger(...args: any[]) { + if (this.interactive) { + console.log(...args); + } + } + + indented(level: number, ...args: any[]) { + this.logger(" ".repeat(INDENTATION * level), ...args); + } + + header(title: string) { + this.blankLine(); + this.logger(chalk.bold(title)); + } + + installerFrames() { + const prefix = `${" ".repeat(INDENTATION)} - ${ + this.dry ? chalk.yellow("SKIPPED | ") : chalk.green("OK | ") + }`; + return [`${prefix} `, `${prefix}> `, `${prefix}>> `, `${prefix}>>>`]; + } + + gradient(text: string | number) { + const turboGradient = gradient("#0099F7", "#F11712"); + return turboGradient(text.toString()); + } + + hero() { + this.logger(chalk.bold(this.gradient(`\n>>> TURBOREPO\n`))); + } + + info(...args: any[]) { + this.logger(...args); + } + + mainStep(title: string) { + this.blankLine(); + this.logger(`${this.step}. ${chalk.underline(title)}`); + this.step += 1; + } + + subStep(...args: any[]) { + this.logger( + " ".repeat(INDENTATION), + `-`, + this.dry ? chalk.yellow("SKIPPED |") : chalk.green("OK |"), + ...args + ); + } + + subStepFailure(...args: any[]) { + this.logger(" ".repeat(INDENTATION), `-`, chalk.red("ERROR |"), ...args); + } + + rootHeader() { + this.blankLine(); + this.indented(2, "Root:"); + } + + rootStep(...args: any[]) { + this.logger( + " ".repeat(INDENTATION * 3), + `-`, + this.dry ? chalk.yellow("SKIPPED |") : chalk.green("OK |"), + ...args + ); + } + + workspaceHeader() { + this.blankLine(); + this.indented(2, "Workspaces:"); + } + + workspaceStep(...args: any[]) { + this.logger( + " ".repeat(INDENTATION * 3), + `-`, + this.dry ? chalk.yellow("SKIPPED |") : chalk.green("OK |"), + ...args + ); + } + + blankLine() { + this.logger(); + } + + error(...args: any[]) { + console.error(...args); + } +} |
