Automatischer Push: 45 Datei(en) geändert

- .claude/agents/planer.md
- .claude/agents/quorum-stimme.md
- .claude/skills/bookstack-upload/SKILL.md
- .claude/skills/bookstack-upload/scripts/bookstack/archiv.py
- .claude/skills/bookstack-upload/scripts/bookstack/auswahl.py
- .claude/skills/bookstack-upload/scripts/bookstack/beschreibung.py
- .claude/skills/bookstack-upload/scripts/bookstack/bilder.py
- .claude/skills/bookstack-upload/scripts/bookstack/ergebnis.py
- .claude/skills/bookstack-upload/scripts/bookstack/hochladen.py
- .claude/skills/bookstack-upload/scripts/bookstack/konvertierung.py
- .claude/skills/bookstack-upload/scripts/bookstack/struktur.py
- .claude/skills/bookstack-upload/scripts/bookstack/verweise.py
- … und 33 weitere

Erzeugt vom PostToolUse-Hook .vault-tools/auto-push/auto_push.py.

Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
Pascal MichelandClaude Opus 5 committed 2026-10-01 04:00:02 +02:00
1 parent 60dee0ab68
commit deec79a6ea
45 files changed
+8645 -262

No files matched your search

@@ -0,0 +1,46 @@
"""Verschiebt bereits hochgeladene Notizen aus dem aktiven Bereich in ein Archiv.
Ersteller: Pascal Michel
Erstellt: 2026-08-11
Doku: docs/code/archiv.md · Version und Änderungen: CHANGELOG.md
"""
from __future__ import annotations
from pathlib import Path
ARCHIV_ORDNERNAME = "nicht hochladen - ARCHIV"
def ist_archiviert(pfad: Path, quelle: Path) -> bool:
"""True, wenn der Pfad bereits unterhalb des Archiv-Unterverzeichnisses liegt.
Liegt pfad außerhalb von quelle (z. B. --nur mit einem externen Pfad), gilt
das als „nicht archiviert" — archiviere() wird für solche Pfade gar nicht
erst aufgerufen (siehe hochladen.py).
"""
try:
teile = pfad.relative_to(quelle).parts
except ValueError:
return False
return ARCHIV_ORDNERNAME in teile
def archivziel(pfad: Path, quelle: Path) -> Path:
"""Berechnet den Zielpfad im Archiv, ohne etwas zu verschieben."""
relativ = pfad.relative_to(quelle)
return quelle / ARCHIV_ORDNERNAME / relativ
def archiviere(pfad: Path, quelle: Path) -> Path:
"""Verschiebt die Datei ins Archiv-Unterverzeichnis; legt Ordner bei Bedarf an.
Existiert das Ziel schon, bleibt die Quelle liegen und es kommt FileExistsError.
Unter Windows wirft rename das ohnehin, unter POSIX würde es still überschreiben.
"""
ziel = archivziel(pfad, quelle)
if ziel.exists():
raise FileExistsError(f"Archivziel existiert schon: {ziel}")
ziel.parent.mkdir(parents=True, exist_ok=True)
pfad.rename(ziel)
return ziel