core/reporters/derivation.reporter.ts

core/reporters/derivation.reporter.ts is a file in Bane's Lab Content. 24 lines of code and 5 definitions.

import { FINDINGS_HEAD, FINDING_INDENT } from "#configuration/strings/derivation.strings";
import type { Finding } from "#types/derivation.types";
import { LINE_END } from "#configuration/constants/inventory.constants";
import process from "node:process";

const EXIT_CLEAN = 0;
const EXIT_FAILED = 1;

export const say = function say(message: string): void {
    process.stdout.write(message + LINE_END);
};

export const refuse: (message: string) => never = function refuse(message: string): never {
    process.stderr.write(message + LINE_END);
    process.exit(EXIT_FAILED);
};

export const conclude = function conclude(label: string, findings: readonly Finding[], clean: string): void {
    if (findings.length === 0) {
        say(clean);
        process.exit(EXIT_CLEAN);
    }
    say(`${label}: ${String(findings.length)}${FINDINGS_HEAD}`);
    for (const finding of findings) {
        say(`${FINDING_INDENT}${finding.file}  ${finding.message}`);
    }
    process.exit(EXIT_FAILED);
};