waffensachkunde

Waffensachkunde – Lernsoftware für die Sachkundeprüfung nach § 7 WaffG. Barrierefrei, offline, EUPL-1.2.

/ .githooks pre-commit

2,2 KB Rohdatei
.githooks/pre-commit — 50 Zeilen
1 #!/bin/sh
2 #
3 # Barrierefreiheits- und Qualitätsgate vor jedem Commit.
4 #
5 # WARUM AM COMMIT UND NICHT AM PUSH
6 # Dieses Projekt hat kein Fernarchiv. `git push` findet nie statt, ein
7 # pre-push-Hook wäre totes Konfigurat. Der Commit ist das einzige Ereignis,
8 # das tatsächlich eintritt.
9 #
10 # WARUM NUR DIE SCHNELLSTUFE
11 # Die Vollstufe (Bau + Playwright) dauert rund 73 Sekunden. Ein Gate, das
12 # bei jedem Zwischenstand so lange blockiert, wird nicht respektiert,
13 # sondern mit --no-verify abgeschaltet. Deshalb hier nur die Schnellstufe
14 # (rund 40 s) - und eine Erinnerung, wenn die Vollstufe zu lange her ist.
15 #
16 # UMGEHEN
17 # `git commit --no-verify` bleibt möglich und soll es bleiben. Ein
18 # Alleinentwickler braucht Zwischenstände. Wer umgeht, weiß, was er tut -
19 # die Veröffentlichungsliste verlangt die Vollstufe ohnehin.
20 #
21 # EINRICHTEN
22 # Hooks liegen versioniert unter .githooks/ und wirken erst nach
23 # git config core.hooksPath .githooks
24 # Das erledigt `npm run hooks:einrichten` in app/, und `npm install` ruft es
25 # über das prepare-Skript von selbst auf.
26
27 set -e
28
29 wurzel=$(git rev-parse --show-toplevel)
30 stempel="$wurzel/.git/gate-stempel"
31
32 printf 'Gate (Schnellstufe): Typen, Linter, Tests …\n'
33
34 cd "$wurzel/app"
35 npm run --silent gate:schnell
36
37 # ── Erinnerung an die Vollstufe ────────────────────────────────────────────
38 # Kein Sperren, nur Sagen: Sperren erzeugt Umgehungsgewohnheiten, und die
39 # Vollstufe gehört ohnehin in die Veröffentlichungsliste.
40 if [ ! -f "$stempel" ]; then
41 printf '\nHinweis: Die Vollstufe lief hier noch nie.\n'
42 printf 'Vor dem Veröffentlichen bitte `npm run gate` in app/ ausführen -\n'
43 printf 'nur dort laufen die Prüfungen im echten Fenster (Kontrast, Zielgrößen).\n'
44 elif [ -n "$(find "$wurzel/app/src" -newer "$stempel" -print -quit 2>/dev/null)" ]; then
45 printf '\nHinweis: Seit dem letzten vollen Gate-Lauf hat sich der Quelltext geändert.\n'
46 printf 'Vor dem Veröffentlichen bitte `npm run gate` in app/ ausführen.\n'
47 fi
48
49 printf '\nGate sauber: Typen, Linter, Tests - axe je Ansicht in jsdom.\n'
50 printf 'Kontrast und Zielgroessen prueft erst die Vollstufe im echten Fenster.\n'