51 lines
1.6 KiB
JavaScript
51 lines
1.6 KiB
JavaScript
import { readFile, writeFile } from "node:fs/promises";
|
||
import path from "node:path";
|
||
import { fileURLToPath } from "node:url";
|
||
import { PUBLIC_ROUTES } from "./routes.mjs";
|
||
|
||
const __filename = fileURLToPath(import.meta.url);
|
||
const __dirname = path.dirname(__filename);
|
||
const indexPath = path.resolve(__dirname, "../index.html");
|
||
|
||
const LIST_INDENT = " ";
|
||
const WRAPPER_INDENT = " ";
|
||
|
||
const generateListItems = () =>
|
||
PUBLIC_ROUTES.map(
|
||
({ path, href, label }) => {
|
||
const targetHref = href ?? path;
|
||
return `${LIST_INDENT}<li><a href="${targetHref}">${label}</a></li>`;
|
||
}
|
||
).join("\n");
|
||
|
||
async function main() {
|
||
const originalContent = await readFile(indexPath, "utf8");
|
||
|
||
const navPattern = new RegExp(
|
||
`${WRAPPER_INDENT}<ul class="no-js-nav">[\\s\\S]*?${WRAPPER_INDENT}<\\/ul>`,
|
||
"m"
|
||
);
|
||
const match = originalContent.match(navPattern);
|
||
|
||
if (!match) {
|
||
throw new Error(
|
||
"Bloc <ul class=\"no-js-nav\"> introuvable dans index.html. Impossible de mettre à jour la navigation noscript."
|
||
);
|
||
}
|
||
|
||
const replacement = `${WRAPPER_INDENT}<ul class="no-js-nav">\n${generateListItems()}\n${WRAPPER_INDENT}</ul>`;
|
||
const updatedContent = originalContent.replace(navPattern, replacement);
|
||
|
||
if (updatedContent !== originalContent) {
|
||
await writeFile(indexPath, updatedContent, "utf8");
|
||
console.log("✔ Mise à jour de la navigation noscript dans index.html");
|
||
} else {
|
||
console.log("ℹ Navigation noscript déjà à jour");
|
||
}
|
||
}
|
||
|
||
main().catch((error) => {
|
||
console.error("[update-noscript] Échec de la mise à jour :", error);
|
||
process.exit(1);
|
||
});
|