import { existsSync, readFileSync } from 'node:fs'; import { join, resolve } from 'node:path'; const root = resolve(import.meta.dirname, '..'); const failures = []; const assert = (condition, message) => { if (!condition) failures.push(message); }; const read = path => readFileSync(join(root, path), 'utf8'); const files = [ 'UPDATE_VENDOO.bat', 'scripts/updater/Vendoo.Updater.Preflight.ps1', 'scripts/update-vendoo-gui.ps1', 'scripts/updater/Vendoo.Updater.UI.ps1', 'scripts/updater/Vendoo.Updater.Host.ps1', 'scripts/updater/Vendoo.Updater.Worker34.ps1', ]; for (const file of files) assert(existsSync(join(root, file)), `Updater-Startdatei fehlt: ${file}`); if (existsSync(join(root, 'UPDATE_VENDOO.bat'))) { const starter = read('UPDATE_VENDOO.bat'); assert(starter.includes('Production Updater 3.4 preflight'), 'Root-Starter meldet nicht Updater 3.4.'); assert(starter.includes('Vendoo.Updater.Preflight.ps1'), 'Root-Starter startet den Preflight nicht.'); assert(!starter.includes('Production Updater 3.3'), 'Root-Starter enthält noch die alte 3.3-Bezeichnung.'); } if (existsSync(join(root, 'scripts/updater/Vendoo.Updater.Preflight.ps1'))) { const preflight = read('scripts/updater/Vendoo.Updater.Preflight.ps1'); assert(preflight.includes("$UpdaterVersion = '3.4.0'"), 'Preflight meldet nicht Version 3.4.0.'); assert(preflight.includes('Vendoo.Updater.Worker34.ps1'), 'Preflight prüft Worker34 nicht.'); assert(!preflight.includes("Vendoo.Updater.Worker.ps1'"), 'Preflight verlangt weiterhin den entfernten Worker 3.3.'); } if (existsSync(join(root, 'scripts/update-vendoo-gui.ps1'))) { assert(read('scripts/update-vendoo-gui.ps1').includes('Vendoo.Updater.UI.ps1'), 'GUI-Bootstrap startet die Updater-UI nicht.'); } if (existsSync(join(root, 'scripts/updater/Vendoo.Updater.UI.ps1'))) { const ui = read('scripts/updater/Vendoo.Updater.UI.ps1'); assert(ui.includes("$UpdaterVersion = '3.4.0'"), 'UI meldet nicht Version 3.4.0.'); assert(ui.includes('Vendoo.Updater.Host.ps1'), 'UI startet den Host nicht.'); assert(ui.includes('Vendoo.Updater.Worker34.ps1'), 'UI übergibt Worker34 nicht an den Host.'); assert(!ui.includes("Vendoo.Updater.Worker.ps1'"), 'UI verweist weiterhin auf den entfernten Worker 3.3.'); } if (existsSync(join(root, 'scripts/updater/Vendoo.Updater.Host.ps1'))) { const host = read('scripts/updater/Vendoo.Updater.Host.ps1'); assert(host.includes("$UpdaterVersion = '3.4.0'"), 'Host meldet nicht Version 3.4.0.'); assert(host.includes('[System.Management.Automation.Language.Parser]::ParseFile'), 'Host parst den Worker nicht vor der Ausführung.'); } if (existsSync(join(root, 'scripts/updater/Vendoo.Updater.Worker34.ps1'))) { assert(read('scripts/updater/Vendoo.Updater.Worker34.ps1').includes("$UpdaterVersion='3.4.0'"), 'Worker34 meldet nicht Version 3.4.0.'); } if (failures.length) { console.error(`Updater-3.4-Startketten-Gate fehlgeschlagen (${failures.length})`); failures.forEach(failure => console.error(`- ${failure}`)); process.exit(1); } console.log('Updater-3.4-Startketten-Gate erfolgreich: Root-Starter, Preflight, UI, Host und Worker34 sind konsistent verdrahtet.');