This commit is contained in:
team3
2026-09-07 07:44:00 +02:00
parent 5d42b4cfc5
commit c6bbed4049
250 changed files with 13372 additions and 6203 deletions

View File

@@ -20,12 +20,18 @@ import shutil
import parser
import projekte
import verzeichnis
# Was beim Vergleich zählt: der sichtbare Inhalt einer Funktion, nicht ihre Datei.
# Wird eine Karte umbenannt, wandert ihre Datei — der Vergleich hinge sonst an
# einem Dateinamen statt an dem, was dasteht.
FELDER = ("ziel", "regeln", "testen", "stand")
# Dateien, die dem Projekt gehören und nicht der Planung. Sie überleben das
# Umsetzen, auch wenn die Kopie sie nicht kennt. Das Gespräch und das
# Urteilsgedächtnis stehen bewusst nicht hier: die gehören zum geplanten Stand.
NUR_PROJEKT = (verzeichnis.DATEI,)
def laeuft(projekt: str) -> bool:
return (projekte.stand(projekt) / projekte.PLANUNG).is_dir()
@@ -55,6 +61,11 @@ def setze_um(projekt: str):
Erst die Kopie herausheben, dann den alten Stand räumen, dann die Kopie an
seine Stelle. Ein Absturz mitten im Räumen ließe sonst ein Projekt ohne Karten
zurück — und die Planung gleich mit.
Was dem Projekt gehört und nicht der Planung, bleibt stehen: das
Arbeitsverzeichnis wurde vielleicht erst nach dem Planungsstart festgelegt und
fehlt dann in der Kopie. Das Räumen hat es mitgenommen, und der nächste Lauf
fand kein Verzeichnis mehr.
"""
kopie = _kopie(projekt)
if not kopie.is_dir():
@@ -64,6 +75,9 @@ def setze_um(projekt: str):
shutil.rmtree(daneben, ignore_errors=True)
kopie.rename(daneben)
for eintrag in ordner.iterdir():
if eintrag.name in NUR_PROJEKT and not (daneben / eintrag.name).exists():
eintrag.rename(daneben / eintrag.name)
continue
shutil.rmtree(eintrag) if eintrag.is_dir() else eintrag.unlink()
for eintrag in daneben.iterdir():
eintrag.rename(ordner / eintrag.name)