import colors from "colors/safe"; import { Problem } from "../context"; import { getFileName } from "../utils"; const severities = ["info", "warning", "error"]; export function terminalOutput(problems: Problem[]) { if (problems.length === 0) { return; } for (const problem of problems) { const { id } = problem.object; console.log(colors.underline(id)); console.log( severity(problem.severity, problem.severity) + " " + problem.message + " " + colors.gray(getFileName(problem.rule)) ); console.log(); } const maxSeverity = severities[ Math.max(...problems.map(problem => severities.indexOf(problem.severity))) ]; console.log( severity( maxSeverity, `${problems.length} problem${problems.length === 1 ? "" : "s"} reported` ) ); } function severity(severity: string, str: string) { if (severity === "info") { return colors.green(str); } else if (severity === "warning") { return colors.yellow(str); } else if (severity === "error") { return colors.red(str); } else { throw new Error(`Invalid severity: ${severity}`); } }