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); };