import { readdirSync, readFileSync, writeFileSync } from "node:fs"; import { basename, join } from "node:path"; import { buildDocSections, buildDocTitles, stripDocMeta, } from "./markdown-docs"; const docsDir = new URL("../src/docs", import.meta.url); const outputFile = new URL("../src/docs.generated.ts", import.meta.url); const sourceDocs = Object.fromEntries( readdirSync(docsDir) .filter((fileName) => fileName.endsWith(".md")) .sort() .map((fileName) => [ basename(fileName, ".md"), readFileSync(join(docsDir.pathname, fileName), "utf8"), ]) ); const docs = Object.fromEntries( Object.entries(sourceDocs).map(([docName, markdown]) => [ docName, stripDocMeta(markdown), ]) ); const docTitles = buildDocTitles(sourceDocs); const docSections = buildDocSections(sourceDocs); const output = [ "// This file is generated by scripts/generate-docs.ts.", "// Edit markdown files in src/docs instead.", `export const cliDocs = ${JSON.stringify(docs, null, 2)} as const;`, "", `export const cliDocTitles = ${JSON.stringify(docTitles, null, 2)} as const;`, "", `export const cliDocSections = ${JSON.stringify(docSections, null, 2)} as const;`, "", "export type CliDocName = keyof typeof cliDocs;", "", ].join("\n"); writeFileSync(outputFile, output, "utf8");