55 lines
1.6 KiB
JavaScript
55 lines
1.6 KiB
JavaScript
#!/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;
|
|
});
|