Files
claude-regelwerk/.claude/skills/bookstack-upload/scripts/bookstack/archiv.py
T
Pascal MichelandClaude Opus 5 deec79a6ea 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]>
2026-10-01 04:00:02 +02:00

47 lines
1.5 KiB
Python

"""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