61 lines
1.6 KiB
JavaScript
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();
|