runtime/entrypoints/validation.entrypoint.ts
runtime/entrypoints/validation.entrypoint.ts is a file in GovLab Pipeline. 67 lines of code and 10 definitions.
import {
COMMAND_PROCESSOR_KEY,
FALLBACK_EXIT,
NODE_OPTIONS_KEY,
PATH_KEY,
STAGE_NODE_OPTION,
} from "#configuration/constants/shell.constants";
import { GATE_LABEL, LIST_SEPARATOR, MOCKS_MARKER } from "#configuration/constants/stage.constants";
import { INDEX_FAILED, noQualityRoot, skippedWide, unknownMembers } from "#configuration/strings/stage.strings";
import { ROOT, absolutePath, relativePath } from "@ssot/paths";
import { loadGovlabConfig, masterExcludeMarkers, qualityEngineConfig } from "@govlab/quality/config";
import { stageBinDir, withNodeOption, withPathEntry } from "#core/converters/environment.converter";
import { GATE_ARGV } from "#configuration/configs/invocation.config";
import { MEMBERS } from "#configuration/configs/package.config";
import { line } from "#core/reporters/stage.reporter";
import { mkdirSync } from "node:fs";
import path from "node:path";
import process from "node:process";
import { resolveArgv } from "@govlab/argv";
import { runLive } from "#core/adapters/shell.adapter";
import { runStages } from "#core/coordinators/stage.coordinator";
import { shellFor } from "#core/resolvers/shell.resolver";
import { stageArgsOf } from "#core/converters/invocation.converter";
import { stagesFor } from "#core/factories/plan.factory";
import { writeCanonicalJson } from "@govlab/canonical-write";
const args = stageArgsOf(resolveArgv(GATE_ARGV));
process.env[PATH_KEY] = withPathEntry(process.env[PATH_KEY], stageBinDir(ROOT));
process.env[NODE_OPTIONS_KEY] = withNodeOption(process.env[NODE_OPTIONS_KEY], STAGE_NODE_OPTION);
const shell = shellFor(process.platform, process.env[COMMAND_PROCESSOR_KEY]);
const indexStatus = await runLive(shell, `node ${relativePath("govlabHost.indexer")}`);
if (indexStatus !== 0) {
process.stderr.write(`${INDEX_FAILED}\n`);
process.exit(indexStatus);
}
const config = await loadGovlabConfig(ROOT);
const { root: qualityRoot } = qualityEngineConfig(config);
if (typeof qualityRoot !== "string" || qualityRoot.length === 0) {
process.stderr.write(`${noQualityRoot(relativePath("govlabHost.config"))}\n`);
process.exit(FALLBACK_EXIT);
}
const known = MEMBERS.map((member) => member.id);
const unknown = [...args.members].filter((id) => !known.includes(id));
if (unknown.length > 0) {
process.stderr.write(`${unknownMembers(unknown, known)}\n`);
process.exit(FALLBACK_EXIT);
}
const masterIgnore = masterExcludeMarkers(config);
const plan = stagesFor({
cleanCommentsIgnore: [...masterIgnore, MOCKS_MARKER].join(LIST_SEPARATOR),
hexIgnore: masterIgnore.join(LIST_SEPARATOR),
qualityRoot,
scope: args.members,
});
if (plan.skippedWide.length > 0) {
line(skippedWide(plan.skippedWide));
}
const reportPath = absolutePath("govlabHost.reports.verify");
mkdirSync(path.dirname(reportPath), { recursive: true });
await runStages(GATE_LABEL, plan.stages, {
args,
options: {
reportPath,
violationsPath: absolutePath("govlabHost.reports.violations"),
writeReport: writeCanonicalJson,
},
shell,
});