Files
claude-regelwerk/.vault-tools/auto-push/askpass.py
T
Pascal MichelandClaude Opus 5 a81299e673 Automatischer Push der Anweisungsschicht
Der Vault-Root pusht ab jetzt nach jeder Änderung an CLAUDE.md,
AI/Regelwerk/, .claude/agents/, .claude/skills/, .claude/settings.json
oder .vault-tools/ selbsttätig nach Gitea.

- .vault-tools/auto-push/auto_push.py: PostToolUse-Hook, committet und
  pusht. Fehlendes Token, fehlendes Remote und gescheiterter Push sind
  Befunde und gehen in den Kontext, nicht ins Schweigen.
- .vault-tools/auto-push/askpass.py: reicht GITEA_TOKEN an git weiter,
  damit es weder in .git/config noch in einer Kommandozeile steht.
- .vault-tools/auto-push/faelle_auto_push.py: 28 Fälle gegen ein echtes
  Wegwerf-Repo mit echtem Remote, alle bestanden. Der Lauf hat zwei
  Fehler gefunden, die jetzt behoben sind: die Pfadauflösung scheiterte
  an Windows-Kurznamen, und die Laufzeitsperre landete im Repo.
- AI/Regelwerk/veroeffentlichung.md und ein Abschnitt im Stamm halten
  die Regel fest.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-17 22:54:37 +02:00

39 lines
1.2 KiB
Python

"""GIT_ASKPASS-Helfer: gibt das Gitea-Token aus der Umgebung an git weiter.
Ohne diesen Helfer landet das Token entweder in .git/config (Remote-URL mit
Zugangsdaten) oder in einer Kommandozeile (http.extraheader) und ist dort fuer
jeden Prozess der Maschine lesbar. git ruft dieses Skript mit der Eingabe-
aufforderung als Argument auf und liest die Antwort von stdout.
Eine fehlende Variable ist ein Befund: das Skript endet mit Exit 1 und einer
Meldung auf stderr, statt eine leere Zeile auszugeben. Sonst haengt git an
einer stillen Fehlanmeldung.
"""
from __future__ import annotations
import os
import sys
BENUTZER_VARIABLE = "GITEA_BENUTZER"
TOKEN_VARIABLE = "GITEA_TOKEN"
def main(argumente: list[str]) -> int:
frage = " ".join(argumente).lower()
if "username" in frage or "benutzer" in frage:
name = "GITEA_BENUTZER"
wert = os.environ.get(BENUTZER_VARIABLE, "").strip()
else:
name = "GITEA_TOKEN"
wert = os.environ.get(TOKEN_VARIABLE, "").strip()
if not wert:
sys.stderr.write(f"{name} ist nicht gesetzt oder leer.\n")
return 1
sys.stdout.write(wert + "\n")
return 0
if __name__ == "__main__":
raise SystemExit(main(sys.argv[1:]))