mirror of
https://github.com/webstudio-is/webstudio.git
synced 2026-11-09 14:03:33 +09:00
51 lines
1.4 KiB
TypeScript
51 lines
1.4 KiB
TypeScript
import { readdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
import { basename, join } from "node:path";
|
|
import { format } from "prettier";
|
|
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 = await format(
|
|
[
|
|
"// 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"),
|
|
{
|
|
filepath: outputFile.pathname,
|
|
}
|
|
);
|
|
|
|
writeFileSync(outputFile, output, "utf8");
|