Files
lettersoup-online/001_documentation/Requirements/update_req_index.js
2025-05-09 14:14:00 +08:00

61 lines
1.6 KiB
JavaScript

const fs = require("fs");
const path = require("path");
// Function to extract H1 heading from markdown content
function extractH1(content) {
const match = content.match(/^#\s+(.+)$/m);
return match ? match[1] : null;
}
// Function to get REQ number from directory name
function getReqNumber(dirName) {
const match = dirName.match(/REQ(\d+)/);
return match ? parseInt(match[1]) : 0;
}
// Main function to update index
async function updateIndex() {
try {
const requirementsPath = __dirname;
const dirs = fs
.readdirSync(requirementsPath)
.filter((item) => item.match(/^REQ\d+$/))
.sort((a, b) => getReqNumber(a) - getReqNumber(b));
let indexContent = "# Requirements Index\n\n";
for (const dir of dirs) {
const dirPath = path.join(requirementsPath, dir);
const files = fs
.readdirSync(dirPath)
.filter((file) => file.endsWith(".md"));
for (const file of files) {
const filePath = path.join(dirPath, file);
const content = fs.readFileSync(filePath, "utf8");
const heading = extractH1(content);
if (heading) {
indexContent += `- [${dir}: ${heading}](./${dir}/${file})\n`;
// indexContent += `[View Requirement](./${dir}/${file})\n\n`;
}
}
}
// Write to index.md
fs.writeFileSync(
path.join(requirementsPath, "index.md"),
indexContent,
"utf8"
);
console.log("Index updated successfully!");
console.log("project/001_documentation/Requirements/index.md");
} catch (error) {
console.error("Error updating index:", error);
}
}
// Run the update
updateIndex();