/** * Hält fest, wann die Vollstufe des Gates zuletzt sauber durchlief. * * Der Stempel liegt in `.git/` und ist damit bewusst NICHT versioniert: Er * beschreibt den Zustand dieses einen Arbeitsplatzes, nicht den des Projekts. * Ein eingecheckter Stempel würde behaupten, bei jedem anderen sei die * Vollstufe auch schon gelaufen. * * Der pre-commit-Hook vergleicht sein Alter mit der jüngsten Änderung unter * `app/src` und erinnert, wenn der Quelltext seither weitergewandert ist. */ import { execFileSync } from 'node:child_process'; import { writeFileSync } from 'node:fs'; import { dirname, join } from 'node:path'; import { fileURLToPath } from 'node:url'; import { paketstand } from './paketstand.mjs'; const wurzel = execFileSync('git', ['rev-parse', '--show-toplevel'], { encoding: 'utf8', }).trim(); const pfad = join(wurzel, '.git', 'gate-stempel'); writeFileSync(pfad, `${new Date().toISOString()}\n`, 'utf8'); process.stdout.write(`Gate vollständig durchlaufen. Stempel: ${pfad}\n`); /* Und jetzt das, was der Bericht bisher verschwieg. Playwright zählt übersprungene Prüfungen nicht in die Zusammenfassung: Aus „119 bestanden“ wird „110 bestanden“, und die fehlenden fallen niemandem auf. Ein Gate, das nicht sagt, was es ausgelassen hat, behauptet mehr, als es geprüft hat – dieselbe Unwahrheit, gegen die `bauPruefen()` angelegt ist. Kein Fehlschlag, sondern eine Feststellung: `npm run gate` baut das Paket nicht mit, und ein Abbruch zwänge zu einem mehrminütigen `dist:win` vor jedem Lauf. Wer veröffentlicht, findet den Schritt in docs/veroeffentlichen.md. */ const appWurzel = dirname(dirname(fileURLToPath(import.meta.url))); const paket = paketstand(appWurzel); if (!paket.vorhanden || paket.veraltet) { process.stdout.write( `\nNICHT geprüft: e2e/gepackt.spec.ts – ${paket.grund}\n` + 'Die gepackte Anwendung ist damit ungeprüft geblieben; vor einer ' + 'Veröffentlichung ist das ein offener Punkt.\n', ); } else { process.stdout.write('Einschließlich der Prüfungen gegen das gebaute Paket.\n'); }