aboutsummaryrefslogtreecommitdiffhomepage
path: root/scripts
diff options
context:
space:
mode:
authorYasutake Yohei <61961825+yasutakeyohei@users.noreply.github.com>2026-10-02 23:51:30 +0900
committerYasutake Yohei <61961825+yasutakeyohei@users.noreply.github.com>2026-10-02 23:51:30 +0900
commitc631303be2b86f42b854b051066904edd754b8aa (patch)
treeaaaef9e7a9d4cce29d24d88100cdc02ebaf0281a /scripts
parentd99e593bc8f7c31893cd0dca8e9440da85d4b6ce (diff)
scripts/add-about-prop.mjs: タグ管理廃止に伴い削除
Diffstat (limited to 'scripts')
-rw-r--r--scripts/add-about-prop.mjs107
1 files changed, 0 insertions, 107 deletions
diff --git a/scripts/add-about-prop.mjs b/scripts/add-about-prop.mjs
deleted file mode 100644
index e519863..0000000
--- a/scripts/add-about-prop.mjs
+++ /dev/null
@@ -1,107 +0,0 @@
-import { readFileSync, writeFileSync } from "node:fs";
-import { readdir } from "node:fs/promises";
-import { join, extname, relative } from "node:path";
-
-const DOCS_DIR = join(import.meta.dirname, "..", "src", "content", "docs");
-
-/**
- * Recursively collect all .mdx files.
- */
-async function collectMdxFiles(dir) {
- const entries = await readdir(dir, { withFileTypes: true });
- const files = [];
-
- for (const entry of entries) {
- if (entry.name.startsWith("_")) continue;
- const fullPath = join(dir, entry.name);
- if (entry.isDirectory()) {
- const subFiles = await collectMdxFiles(fullPath);
- files.push(...subFiles);
- } else if (extname(entry.name) === ".mdx") {
- files.push(fullPath);
- }
- }
-
- return files;
-}
-
-/**
- * Extract tags from frontmatter.
- */
-function extractTags(content) {
- const match = content.match(/^---\r?\n([\s\S]*?)\r?\n---/);
- if (!match) return [];
- const fm = match[1];
-
- // Match YAML-style tags array: tags:\n - tag1\n - tag2
- const tagSection = fm.match(/^tags:\s*\n((?:\s+-\s+.+\n?)*)/m);
- if (!tagSection) return [];
-
- const tagLines = tagSection[1].match(/^\s+-\s+(.+)$/gm);
- if (!tagLines) return [];
-
- return tagLines.map((line) => line.replace(/^\s+-\s+/, "").trim());
-}
-
-/**
- * Infer `about` from tags.
- * Uses the first tag that is not "一般質問".
- */
-function inferAbout(tags) {
- for (const tag of tags) {
- if (tag !== "一般質問") return tag;
- }
- return null;
-}
-
-async function main() {
- const files = await collectMdxFiles(DOCS_DIR);
-
- let updated = 0;
- let skipped = 0;
-
- for (const file of files) {
- const content = readFileSync(file, "utf-8");
-
- // Only process files that use QuestionSummary
- if (!content.includes("<QuestionSummary")) continue;
-
- // Skip files that already have about=
- if (content.includes("about=")) {
- skipped++;
- continue;
- }
-
- const tags = extractTags(content);
- const about = inferAbout(tags);
-
- if (!about) {
- console.log(` SKIP (no topic tag): ${relative(DOCS_DIR, file)}`);
- skipped++;
- continue;
- }
-
- // Insert about prop after headline prop
- const newContent = content.replace(
- /(headline=.*\n)(\s+datePublished=)/,
- `$1 about="${about}"\n$2`,
- );
-
- if (newContent === content) {
- console.log(` SKIP (pattern not matched): ${relative(DOCS_DIR, file)}`);
- skipped++;
- continue;
- }
-
- writeFileSync(file, newContent, "utf-8");
- console.log(` about="${about}" → ${relative(DOCS_DIR, file)}`);
- updated++;
- }
-
- console.log(`\nDone: ${updated} updated, ${skipped} skipped.`);
-}
-
-main().catch((err) => {
- console.error("Error:", err);
- process.exit(1);
-});