Files
EVCS/tools/n8n-build.mjs
Tallagrand Thierry 1ae8129658 R2: git = source de vérité — src/nodes/ + build/extract intégrés au push
- src/nodes/*.js (6 nodes + template snapshot) = source de vérité unique.
- n8n-push.mjs reconstruit le JSON depuis src/ avant syntaxe+golden+PUT
  (src gagne toujours; n8n-extract.mjs pour resynchroniser si édition UI).
- n8n-build.mjs --check pour vérifier la synchro.
- Copies historiques déplacées dans archive/ (mortes, dérivées de la prod).
- .gitignore: backups locaux de rollback.
- AGENTS.md: règle R2 pour toutes les futures sessions (dont Qwen local).
- Validé: idempotence, mutation/restauration, pipeline push complet en réel.
2026-08-07 21:03:52 +02:00

39 lines
1.5 KiB
JavaScript

#!/usr/bin/env node
// R2 — BUILD : src/nodes/*.js → workflow JSON (src/ = SOURCE DE VÉRITÉ, src gagne).
// Usage : node tools/n8n-build.mjs [--check]
// --check : vérifie que le JSON est déjà synchronisé avec src/ (exit 1 sinon),
// sans rien écrire.
import fs from 'fs';
import path from 'path';
import { WORKFLOW_FILE, SRC_DIR, NODE_MAP, getCode, setCode } from './lib-node-map.mjs';
const CHECK = process.argv.includes('--check');
const wf = JSON.parse(fs.readFileSync(WORKFLOW_FILE, 'utf8'));
let changes = 0;
for (const { file, node, kind } of NODE_MAP) {
const srcPath = path.join(SRC_DIR, file);
if (!fs.existsSync(srcPath)) throw new Error(`Fichier source manquant: ${srcPath}`);
const srcCode = fs.readFileSync(srcPath, 'utf8');
const n = wf.nodes.find(x => x.name === node);
if (!n) throw new Error(`Node introuvable dans le JSON: ${node}`);
if (getCode(n, kind) !== srcCode) {
changes++;
console.log(`${CHECK ? 'DÉSYNCHRONISÉ' : 'inject'}: ${file} → "${node}"`);
if (!CHECK) setCode(n, kind, srcCode);
}
}
if (CHECK) {
console.log(changes ? `\n${changes} node(s) désynchronisé(s) : lancer node tools/n8n-build.mjs` : 'JSON synchronisé avec src/nodes/');
process.exit(changes ? 1 : 0);
}
if (changes) {
fs.writeFileSync(WORKFLOW_FILE, JSON.stringify(wf, null, 2) + '\n');
console.log(`\nBuild OK: ${changes} node(s) injecté(s) dans ${WORKFLOW_FILE}`);
} else {
console.log('Build: aucun changement (déjà synchronisé)');
}