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