UNPKG

@tsed/cli-core

Version:
41 lines (40 loc) 1.29 kB
// @ts-ignore import { isFunction } from "@tsed/core"; import { DefaultRenderer, Listr, ListrLogger, VerboseRenderer } from "listr2"; import { getLogger } from "./createInjector.js"; class CustomLogger extends ListrLogger { log(level, message, options) { if (["FAILED"].includes(level)) { getLogger()?.error(`[${level}]`, message); } else { getLogger()?.info(`[${level}]`, message); } } } function getOptions({ bindLogger = true, ...ctx }) { const useRawRenderer = !(!ctx.verbose && !process.env.CI); return { silentRendererCondition: process.env.NODE_ENV === "test", renderer: useRawRenderer ? VerboseRenderer : DefaultRenderer, rendererOptions: useRawRenderer && bindLogger ? { logger: new CustomLogger() } : undefined }; } export function createTasks(tasks, ctx) { return new Listr(tasks, getOptions(ctx)); } export function createSubTasks(tasks, opts) { return async (ctx, task) => { if (isFunction(tasks)) { tasks = await tasks(ctx, task); } return task.newListr(tasks, getOptions(opts)); }; } export function createTasksRunner(tasks, ctx) { return createTasks(tasks, ctx).run(ctx); }