update
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user