UNPKG

clean-code-metrics

Version:
39 lines (36 loc) 1.3 kB
import TaskMetrics from "../TaskMetrics"; import chalk from "chalk"; import { SummaryTask } from "../types/SummaryTask"; import { getColor, getPrio } from "./TaskStyles"; import fs from "fs"; export default async function summary( taskFilter: string[] | undefined, verbose: boolean, configOverridePath?: fs.PathLike, ): Promise<void> { taskFilter = taskFilter?.length ? taskFilter : undefined; if (verbose) console.info("Searching project for tasks..."); const taskMetric = ( await TaskMetrics.createMetrics(configOverridePath) ).get(); const taskLength = Math.max( ...taskMetric.getConfig().searchPattern.map((p) => p.length), ); if (verbose) console.info(`Summarize all Tasks...`); //TODO with true remove false console.info( prettyPrint(taskMetric.taskSummary(true, taskFilter), taskLength), ); } const prettyPrint = (summaryTasks: SummaryTask[], taskLength: number) => { return summaryTasks .sort((a, b) => getPrio(a.task) - getPrio(b.task) || b.amount - a.amount) .map((element) => { const taskName = element.task; const appender = " ".repeat(taskLength - taskName.length); const task = getColor(taskName).inverse(`${taskName}${appender}`); const amount = element.amount ? element.amount : chalk.gray("0"); return `${task}: ${amount}`; }) .join("\n"); };