runtime/entrypoints/package.entrypoint.ts
runtime/entrypoints/package.entrypoint.ts is a file in GovLab Docs. 99 lines of code and 21 definitions.
import { ACTIVITY_VERBS, DOC_CONCERNS } from "#configuration/constants/concern.constants";
import { EXTENSION_DIR, loadUserRegistries } from "#core/loaders/registry.loader";
import { FLAG_NAMES, LIST_SEPARATOR } from "#configuration/constants/invocation.constants";
import { ROOT, absolutePath } from "@ssot/paths";
import { docsConfig, loadGovlabConfig } from "@govlab/quality/config";
import { flagValue, hasFlag, resolveArgv } from "@govlab/argv";
import { loadConceptMap, loadGovernanceDeriver } from "#core/loaders/quality.loader";
import { print, printErr } from "#core/reporters/base.reporter";
import type { ArchPort } from "#types/readme.types";
import { DOC_FORMS } from "#configuration/constants/form.constants";
import { DOC_VERBS } from "#configuration/constants/verb.constants";
import { DocChecks } from "#core/coordinators/document.coordinator";
import { GENERATED_MARK_PREFIX } from "@govlab/canonical-write";
import type { ManifestModule } from "#types/manifest.types";
import { PACKAGE_ARGV } from "#configuration/configs/invocation.config";
import { PACKAGE_TEXT } from "#configuration/strings/package.strings";
import { SpecOutputs } from "#core/factories/document.output.factory";
import { createArchRelations } from "@govlab/context";
import { createModuleDocs } from "#core/factories/document.factory";
import { deriveRepoMetrics } from "#core/adapters/vcs.adapter";
import { discoverManifests } from "#core/loaders/manifest.loader";
import { formatMarkdown } from "#core/adapters/markdown.adapter";
import { persistSpec } from "#core/persistence/document.persistence";
import process from "node:process";
import { resolve } from "node:path";
import { workspaceMapTargetFor } from "#core/coordinators/dependency.coordinator";
const TRAILING_SLASH = "/";
const FAILURE_EXIT = 1;
const argv = resolveArgv(PACKAGE_ARGV);
const config = await loadGovlabConfig(ROOT);
const docs = docsConfig(config);
const harnessRoot = docs.harness?.root ?? null;
const harnessDot = harnessRoot?.endsWith(TRAILING_SLASH) === true ? harnessRoot.slice(0, -1) : harnessRoot;
const discoverOptions = { allowDot: new Set([EXTENSION_DIR, ...(harnessDot === null ? [] : [harnessDot])]) };
const discoverAll = (): ManifestModule[] => discoverManifests(ROOT, discoverOptions);
const registries = await loadUserRegistries(
ROOT,
{ activityVerbs: ACTIVITY_VERBS, concerns: DOC_CONCERNS, forms: DOC_FORMS, refVerbs: DOC_VERBS },
{ allowGlobal: config.extensions?.global ?? false },
);
const relations = createArchRelations();
const archRelations: ArchPort = {
get: (id) => relations.get(id),
resolve: (ids) => relations.resolve([...ids]),
validateOntology: () => relations.validateOntology(),
};
const engine = createModuleDocs({
archRelations,
conceptMap: loadConceptMap(absolutePath("govlab.quality.generated.concepts")),
consumerRoot: ROOT,
deriveGovernedBy: loadGovernanceDeriver(absolutePath("govlab.quality.generated.rules")),
deriveRepoMetrics,
docConcerns: registries.concerns,
docForms: registries.forms,
docMembers: docs.members,
hostTokens: docs.hostTokens,
});
const outputs = new SpecOutputs({ discoverAll, engine, formatMarkdown, root: ROOT });
const checks = new DocChecks({
discoverAll,
engine,
generatedPrefix: GENERATED_MARK_PREFIX,
moduleOutputs: async (module) => outputs.moduleOutputs(module),
workspaceMapTarget: workspaceMapTargetFor({
declaredDocLocation: (doc) => engine.declaredDocLocation(doc),
discoverAll,
formatMarkdown,
renderDeclaredDoc: (doc) => engine.renderDeclaredDoc(doc),
root: ROOT,
}),
writeSpec: persistSpec,
});
const onlyValue = flagValue(argv, FLAG_NAMES.only);
const only = onlyValue === undefined ? null : new Set(onlyValue.split(LIST_SEPARATOR));
const workspaceMapOnly = hasFlag(argv, FLAG_NAMES.workspaceMapOnly);
const [target] = argv.positionals;
try {
if (hasFlag(argv, FLAG_NAMES.list)) {
for (const module of discoverAll()) {
print(module.relPath);
}
} else if (hasFlag(argv, FLAG_NAMES.fix) || hasFlag(argv, FLAG_NAMES.check)) {
const findings = await checks.checkModules({ fix: hasFlag(argv, FLAG_NAMES.fix), only, workspaceMapOnly });
process.exitCode = hasFlag(argv, FLAG_NAMES.check) && findings > 0 ? FAILURE_EXIT : 0;
} else if (hasFlag(argv, FLAG_NAMES.all)) {
await checks.generateAll({ only, workspaceMapOnly });
} else if (target !== undefined && hasFlag(argv, FLAG_NAMES.write)) {
await checks.writeOne(target);
} else if (target === undefined) {
printErr(PACKAGE_TEXT.usage);
process.exitCode = FAILURE_EXIT;
} else {
const readme = engine.generateReadme(resolve(target));
process.stdout.write(await formatMarkdown(readme));
}
} catch (error) {
printErr(error instanceof Error ? error.message : String(error));
process.exitCode = FAILURE_EXIT;
}