Skip to content

Commit f08eea5

Browse files
committed
fix: publish document update metadata
1 parent 32632bc commit f08eea5

4 files changed

Lines changed: 39 additions & 2 deletions

File tree

.gitignore

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
11
node_modules/
22
dist/
33
*.log
4-
docs/last-updated.json

docs/last-updated.json

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
{
2+
"_404.md": "2022-02-08",
3+
"_sidebar.md": "2022-07-08",
4+
"about.md": "2022-07-09",
5+
"advanced/beAdmin.md": "2026-01-28",
6+
"advanced/beauty.md": "2024-04-07",
7+
"advanced/troubleshooting.md": "2022-12-04",
8+
"advanced/undervoltage.md": "2022-07-09",
9+
"contribution.md": "2022-07-08",
10+
"exclusive/code.md": "2023-11-21",
11+
"exclusive/media.md": "2022-08-25",
12+
"exclusive/mine.md": "2022-08-31",
13+
"play&office/android.md": "2023-07-08",
14+
"play&office/media.md": "2022-12-29",
15+
"play&office/office.md": "2024-06-25",
16+
"play&office/play.md": "2024-02-20",
17+
"postscript.md": "2022-05-29",
18+
"README.md": "2024-02-22",
19+
"rookie/archlinux_pre_install.md": "2022-08-17",
20+
"rookie/basic_install.md": "2024-04-07",
21+
"rookie/DE&App.md": "2024-03-16",
22+
"rookie/fxckGFW.md": "2023-01-19",
23+
"rookie/graphic_driver.md": "2024-02-11",
24+
"rookie/transparentProxy.md": "2022-02-08"
25+
}

scripts/build.mjs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,12 @@ import { writeLastUpdatedManifest } from "./generate-last-updated.mjs";
66

77
const root = resolve(dirname(fileURLToPath(import.meta.url)), "..");
88
const output = resolve(root, "dist");
9+
const lastUpdatedManifest = resolve(root, "docs/last-updated.json");
910

11+
writeLastUpdatedManifest(lastUpdatedManifest);
1012
rmSync(output, { recursive: true, force: true });
1113
mkdirSync(output, { recursive: true });
1214
cpSync(resolve(root, "docs"), output, { recursive: true });
13-
writeLastUpdatedManifest(resolve(output, "last-updated.json"));
1415
writeFileSync(resolve(output, ".nojekyll"), "");
1516

1617
console.log("Static site built in dist/.");

scripts/validate-site.mjs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ const index = readFileSync(resolve(docsDirectory, "index.html"), "utf8");
2323
const siteScript = readFileSync(resolve(docsDirectory, "scripts/site.js"), "utf8");
2424
const workflow = readFileSync(resolve(root, ".github/workflows/pages.yml"), "utf8");
2525
const packageSource = readFileSync(resolve(root, "package.json"), "utf8");
26+
const lastUpdated = JSON.parse(readFileSync(resolve(docsDirectory, "last-updated.json"), "utf8"));
2627

2728
assert(markdownFiles.length === 23, `Expected 23 Chinese Markdown files, found ${markdownFiles.length}.`);
2829
assert(index.includes('lang="zh-CN"'), "The document language must remain zh-CN.");
@@ -37,6 +38,17 @@ assert(!siteScript.includes("topMargin:"), "Deprecated topMargin must not offset
3738
assert(workflow.includes("fetch-depth: 0"), "The deployment checkout must include full Git history.");
3839
assert(packageSource.includes("scripts/generate-last-updated.mjs"), "The local preview does not generate last-updated metadata.");
3940

41+
const expectedMetadataFiles = markdownFiles
42+
.map((file) => file.slice(docsDirectory.length + 1).replaceAll("\\", "/"))
43+
.sort();
44+
assert(
45+
JSON.stringify(Object.keys(lastUpdated).sort()) === JSON.stringify(expectedMetadataFiles),
46+
"Last-updated metadata must cover every Chinese Markdown file.",
47+
);
48+
for (const [file, date] of Object.entries(lastUpdated)) {
49+
assert(/^\d{4}-\d{2}-\d{2}$/.test(date), `Invalid last-updated date for ${file}.`);
50+
}
51+
4052
const commentInvariants = [
4153
'clientID: "296c581fc4b2a837a1e3"',
4254
'clientSecret: "7e7f0ad1809fa4a1915430ade04835f6849ab56a"',

0 commit comments

Comments
 (0)