#!/usr/bin/env node const path = require("path"); const { spawn } = require("child_process"); const SITE_ROOT = path.resolve(__dirname, ".."); const steps = [ { label: "check_internal_links", script: path.join(__dirname, "check_internal_links.js") }, { label: "check_external_links", script: path.join(__dirname, "check_external_links.js") }, { label: "update_external_links", script: path.join(__dirname, "update_external_links.js") }, { label: "mark_dead_links", script: path.join(__dirname, "mark_dead_links.js") }, ]; function runStep({ label, script }) { return new Promise((resolve, reject) => { const child = spawn("node", [script], { cwd: SITE_ROOT, stdio: "inherit", }); child.on("exit", (code, signal) => { if (typeof code === "number" && code === 0) { resolve(); return; } const reason = typeof code === "number" ? `code ${code}` : signal ? `signal ${signal}` : "unknown reason"; reject(new Error(`Étape "${label}" terminée avec ${reason}`)); }); child.on("error", (error) => { reject(new Error(`Impossible d'exécuter "${label}": ${error.message}`)); }); }); } async function main() { for (const step of steps) { const relative = path.relative(SITE_ROOT, step.script); console.log(`\n➡️ Exécution de ${relative}...`); await runStep(step); } console.log("\n✅ Workflow des liens terminé."); } main().catch((error) => { console.error(`\n❌ Échec du workflow: ${error.message}`); process.exitCode = 1; });