runtime/entrypoints/metric.entrypoint.ts
runtime/entrypoints/metric.entrypoint.ts is a file in GovLab Stats. 71 lines of code and 10 definitions.
import {
CENSUS_COMMAND,
CENSUS_SUMMARY,
authoredLine,
taxonomyLine,
wroteCensus,
} from "#configuration/strings/metric.strings";
import { ROOT, absolutePath, relativePath } from "@ssot/paths";
import { humanBytes, num } from "#core/formatters/metric.formatter";
import { memberIndex, workspaceMembers } from "#core/resolvers/package.resolver";
import { collectActiveRules } from "#core/analyzers/rule.analyzer";
import { collectAnalysis } from "#core/loaders/code.loader";
import { collectApp } from "#core/analyzers/site.analyzer";
import { collectDependencyGraph } from "#core/analyzers/dependency.analyzer";
import { collectDocArch } from "#core/loaders/document.loader";
import { collectFindings } from "#core/loaders/pattern.loader";
import { collectGit } from "#core/adapters/vcs.adapter";
import { collectMemory } from "#core/loaders/agent.loader";
import { collectQuality } from "#core/loaders/catalog.loader";
import { collectTaxonomy } from "#core/analyzers/taxonomy.analyzer";
import { collectTypescript } from "#core/loaders/config.loader";
import { collectVerifyReport } from "#core/loaders/report.loader";
import { collectWorkspace } from "#core/loaders/manifest.loader";
import { excludeMatcher } from "@govlab/quality/config";
import { otherGateClaims } from "#core/resolvers/folder.resolver";
import path from "node:path";
import process from "node:process";
import { renderReport } from "#core/reporters/report.reporter";
import { resolveArgv } from "@govlab/argv";
import { runScan } from "#core/analyzers/source.analyzer";
import { writeCensus } from "#core/persistence/metric.persistence";
resolveArgv({ command: CENSUS_COMMAND, flags: [], summary: CENSUS_SUMMARY });
const ignore = await excludeMatcher(ROOT);
const state = runScan({ ignore, members: memberIndex(ROOT), root: ROOT });
const workspace = collectWorkspace(ROOT);
const taxonomy = collectTaxonomy(ROOT, ignore, await otherGateClaims(ROOT));
const appRoot = relativePath("app.root");
const appContainers = taxonomy.roots
.filter((entry) => entry.root.startsWith(`${appRoot}/`))
.flatMap((entry) => entry.containers.map((container) => `${entry.root}/${container.name}`));
const target = await writeCensus(
renderReport({
activeRules: await collectActiveRules(ROOT),
analysis: collectAnalysis(ROOT, ignore),
app: collectApp(ROOT, appContainers, ignore),
docs: collectDocArch(ROOT, ignore),
findings: collectFindings(ROOT),
git: collectGit(ROOT),
graph: collectDependencyGraph(ROOT),
memory: collectMemory(ROOT),
packages: workspaceMembers(ROOT),
quality: collectQuality(ROOT),
state,
taxonomy,
typescript: collectTypescript(ROOT),
verify: collectVerifyReport(ROOT),
workspace,
}),
absolutePath("docArch.generated"),
);
const authored = [...state.authored.values()];
const authoredFiles = authored.reduce((sum, bucket) => sum + bucket.files, 0);
const authoredBytes = authored.reduce((sum, bucket) => sum + bucket.bytes, 0);
process.stdout.write(
[
wroteCensus(path.relative(ROOT, target)),
authoredLine(num(authoredFiles), num(state.lines.code), humanBytes(authoredBytes), num(workspace.total)),
taxonomyLine(num(taxonomy.totals.conformant), num(taxonomy.totals.assessed), num(taxonomy.ungovernedFiles)),
"",
].join("\n"),
);