Skip to content

Commit 098136f

Browse files
committed
[Docs Site] Generate index.md for all index.html files
1 parent 30d61e7 commit 098136f

File tree

13 files changed

+112
-235
lines changed

13 files changed

+112
-235
lines changed
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
name: Generate index.md files
2+
3+
on:
4+
workflow_dispatch:
5+
schedule:
6+
- cron: "*/15 * * * *"
7+
8+
jobs:
9+
generate:
10+
name: Generate index.md files
11+
runs-on: ubuntu-latest
12+
steps:
13+
- uses: actions/checkout@v4
14+
- uses: actions/setup-node@v4
15+
with:
16+
node-version: 22
17+
cache: "npm"
18+
- run: npm ci
19+
- run: npm run build
20+
env:
21+
NODE_OPTIONS: "--max-old-space-size=4192"
22+
- run: npx tsx bin/generate-index-md.ts

bin/generate-index-md.ts

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
import {
2+
readFileSync,
3+
writeFileSync,
4+
appendFileSync,
5+
mkdirSync,
6+
} from "node:fs";
7+
8+
import { glob } from "tinyglobby";
9+
import { parse } from "node-html-parser";
10+
11+
import { process } from "../src/util/rehype";
12+
import rehypeParse from "rehype-parse";
13+
import rehypeBaseUrl from "../src/plugins/rehype/base-url";
14+
import rehypeFilterElements from "../src/plugins/rehype/filter-elements";
15+
import remarkGfm from "remark-gfm";
16+
import rehypeRemark from "rehype-remark";
17+
import remarkStringify from "remark-stringify";
18+
19+
const files = await glob("dist/**/*.html", {
20+
ignore: [
21+
"dist/index.html",
22+
"dist/404.html",
23+
"dist/magic-wan/legal/3rdparty/index.html",
24+
],
25+
});
26+
27+
for (const file of files) {
28+
const text = readFileSync(file, "utf-8");
29+
const html = parse(text);
30+
31+
const title = html.querySelector("#top")?.innerText;
32+
const content = html.querySelector(".sl-markdown-content")?.innerHTML;
33+
34+
if (!content) {
35+
continue;
36+
throw new Error(`Couldn't find .sl-markdown-content selector in ${file}`);
37+
}
38+
39+
let markdown = await process(content, [
40+
rehypeParse,
41+
rehypeBaseUrl,
42+
rehypeFilterElements,
43+
remarkGfm,
44+
rehypeRemark,
45+
remarkStringify,
46+
]);
47+
48+
markdown = `# ${title}\n\n${markdown}`;
49+
50+
const segments = file.split("/").slice(1, -1);
51+
const product = segments.at(0);
52+
const folder = segments.join("/");
53+
54+
mkdirSync("distmd/" + folder, { recursive: true });
55+
56+
appendFileSync("distmd/llms-full.txt", markdown);
57+
appendFileSync(`distmd/${product}/llms-full.txt`, markdown);
58+
59+
writeFileSync("distmd/" + file.slice(5).replace(".html", ".md"), markdown);
60+
}

package-lock.json

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,7 @@
112112
"strip-markdown": "6.0.0",
113113
"svgo": "3.3.2",
114114
"tailwindcss": "3.4.17",
115+
"tinyglobby": "0.2.12",
115116
"tippy.js": "6.3.7",
116117
"ts-blank-space": "0.6.1",
117118
"tsx": "4.19.3",

src/content/docs/workers/index.mdx

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,10 @@ type: overview
44
pcx_content_type: overview
55
sidebar:
66
order: 1
7-
head:
8-
- tag: title
9-
content: Overview
7+
group:
8+
label: foo
9+
badge:
10+
text: Beta
1011
---
1112

1213
import {

src/pages/[...entry]/index.html.md.ts

Lines changed: 0 additions & 30 deletions
This file was deleted.

src/pages/[area]/llms-full.txt.ts

Lines changed: 0 additions & 62 deletions
This file was deleted.

src/pages/[product]/llms-full.txt.ts

Lines changed: 0 additions & 50 deletions
This file was deleted.

src/pages/cloudflare-one/[...entry]/index.md.ts

Lines changed: 0 additions & 51 deletions
This file was deleted.

src/pages/llms-full.txt.ts

Lines changed: 0 additions & 33 deletions
This file was deleted.

0 commit comments

Comments
 (0)