UNPKG

@testmonitor/testmonitor-cli

Version:

The TestMonitor CLI lets you interact with the TestMonitor platform directly from your terminal or CI pipelines.

60 lines (48 loc) 1.51 kB
import chalk from 'chalk'; import ora from 'ora'; import { table } from 'table'; export class Logger { #prefix = 'TestMonitor'; info(message) { console.log(`${this.#prefix}: ${message}`); } success(message) { console.log(`${this.#prefix}: ${chalk.green(message)}`); } warn(message) { console.warn(`${this.#prefix}: ${chalk.yellow(message)}`); } error(message, err) { const output = `${this.#prefix}: ${chalk.red(message)}`; console.error(output); if (process.env.DEBUG && err instanceof Error) { console.error(chalk.gray(err.stack || err.message)); } } debug(message) { if (process.env.DEBUG) { console.log(`${this.#prefix}: ${message}`); } } line(message = '') { console.log(message); } async spin(message, callback, options = {}) { const spinner = ora({ text: `${this.#prefix}: ${message}`, color: 'green', }).start(); try { const result = await callback(); spinner.succeed(`${this.#prefix}: ${chalk.green(options.successMessage || message)}`); return result; } catch (error) { spinner.fail(`${this.#prefix}: ${chalk.red(options.errorMessage || message)}`); throw error; } } table(rows, config) { const output = table(rows, { ...{ singleLine: true }, ...config }); console.log(output); } }