runtime/entrypoints/grammar.entrypoint.ts

runtime/entrypoints/grammar.entrypoint.ts is a file in GovLab Context. 34 lines of code and 4 definitions.

import { FAILURE_EXIT, FLAGS } from "#configuration/constants/invocation.constants";
import {
    PAG_CLEAN,
    PAG_HEADING,
    PAG_REPORT_ONLY,
    defectRow,
    documentRow,
    documentsTotal,
    pagFailed,
} from "#configuration/strings/ontology.report.strings";
import { hasFlag, resolveArgv } from "@govlab/argv";
import { PAG_ARGV } from "#configuration/configs/invocation.config";
import { defineCheck } from "#core/factories/check.factory";
import { executableDocuments } from "#core/loaders/document.loader";
import process from "node:process";
import { validateDocuments } from "#core/validators/document.validator";

defineCheck({ detects: [], enforces: ["architecture:schema-validation"] });

const strict = hasFlag(resolveArgv(PAG_ARGV), FLAGS.strict);
const verdicts = validateDocuments(executableDocuments());
const total = verdicts.reduce((sum, verdict) => sum + verdict.defects.length, 0);
const lines = [
    PAG_HEADING,
    ...verdicts.flatMap((verdict) => [
        documentRow(verdict.defects.length === 0, verdict.source.relative, verdict.defects.length),
        ...verdict.defects.map((defect) => defectRow(verdict.source.relative, defect.line, defect.code, defect.token)),
    ]),
    documentsTotal(verdicts.length, total),
];
process.stdout.write(`${lines.join("\n")}\n`);

if (strict && total > 0) {
    process.stderr.write(`${pagFailed(total)}\n`);
    process.exit(FAILURE_EXIT);
}
process.stdout.write(`${strict ? PAG_CLEAN : PAG_REPORT_ONLY}\n`);