import { writeGeneratedText } from "./fs"; import { inspectionToMarkdown, inspectRepo } from "./inspect"; import { manifestFromInspection, writeManifest } from "./manifest"; import { scorecardToMarkdown, scoreManifest } from "./scorecard"; import { boulderMarkdown, maintainerWorkflows, operatorWorkflowStack, providerPolicy, verificationGates } from "./templates/init"; export async function initHarness(root: string, force = false): Promise { const inspection = await inspectRepo(root); const manifest = manifestFromInspection(inspection); const scorecard = scorecardToMarkdown(scoreManifest(manifest)); const writes = [ [`boulder.yaml`, await writeManifest(root, manifest, force)] as const, [`BOULDER.md`, await writeGeneratedText(root, "BOULDER.md", boulderMarkdown(inspection.name), force)] as const, [`docs/OPERATOR_WORKFLOW_STACK.md`, await writeGeneratedText(root, "docs/OPERATOR_WORKFLOW_STACK.md", operatorWorkflowStack(manifest.workflowStack), force)] as const, [`docs/MAINTAINER_WORKFLOWS.md`, await writeGeneratedText(root, "docs/MAINTAINER_WORKFLOWS.md", maintainerWorkflows(), force)] as const, [`docs/VERIFICATION_GATES.md`, await writeGeneratedText(root, "docs/VERIFICATION_GATES.md", verificationGates(), force)] as const, [`docs/PROVIDER_POLICY.md`, await writeGeneratedText(root, "docs/PROVIDER_POLICY.md", providerPolicy(), force)] as const, [`docs/HARNESS_QUALITY_SCORECARD.md`, await writeGeneratedText(root, "docs/HARNESS_QUALITY_SCORECARD.md", scorecard, force)] as const, [`docs/REPO_BRIEF.md`, await writeGeneratedText(root, "docs/REPO_BRIEF.md", inspectionToMarkdown(inspection), force)] as const ]; return writes.map(([file, status]) => `${status}: ${file}`); }