@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
JavaScript
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);
}
}