clean-code-metrics
Version:
metrics for clean code
39 lines (36 loc) • 1.3 kB
text/typescript
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");
};