neue Fragn

This commit is contained in:
Björn Runden committed 2026-10-30 15:40:37 +01:00
1 parent 07dbc01c92
commit 6a8035cced
16 files changed
+3422 -16

No files matched your search

+13 -9
View File
@@ -5,7 +5,7 @@
@author Björn Runden <br@runden.de>
@owner Björn Runden <br@runden.de>
@assist KI-unterstützt (Claude Opus 5.5), geprüft von Björn Runden <br@runden.de>
@version 0.3.0 (29.10.2026)
@version 0.3.1 (30.10.2026)
@usage build_bank.py [-d] [-q] [-n] [-c] [--approved-only] [-o js/bank.js] [-e [DIR]] [-b [FILE]]
Aufbau von data/: je Prüfung ein Ordner mit exam.json und beliebig vielen questions_*.json (Quelltext, Klartext).
@@ -238,7 +238,9 @@ def write_bank(exams: list[dict], output: Path) -> None:
def export_site(target: Path, dry_run: bool) -> None:
"""Kopiert nur die Laufzeitdateien (ohne data/, tools/, tests/) nach target.
Ein vorhandenes Ziel wird nur ersetzt, wenn es von hier stammt (Markierungsdatei)."""
In ein vorhandenes Ziel wird nur exportiert, wenn es von hier stammt (Markierungsdatei). Ersetzt werden
ausschließlich EXPORT_ITEMS; andere Dateien im Ziel (z. B. abgelegte Pakete) bleiben unangetastet, und das
Verzeichnis selbst bleibt bestehen (ein darin laufender http.server liefert weiter aus)."""
target = target.resolve()
if target == BASE or BASE in target.parents and target.name in EXPORT_ITEMS + ["data", "tools", "tests"]:
raise ValueError(f"Export-Ziel {target} liegt im Quellbaum")
@@ -247,14 +249,16 @@ def export_site(target: Path, dry_run: bool) -> None:
if dry_run:
log.info("Trockenlauf: würde %s nach %s exportieren", ", ".join(EXPORT_ITEMS), target)
return
if target.exists():
shutil.rmtree(target)
target.mkdir(parents=True)
target.mkdir(parents=True, exist_ok=True)
for item in EXPORT_ITEMS:
src = BASE / item
(shutil.copytree if src.is_dir() else shutil.copy2)(src, target / item)
(target / EXPORT_MARKER).write_text("Export von simulator/tools/build_bank.py – Verzeichnis wird beim nächsten Export ersetzt\n",
encoding="utf-8")
src, dst = BASE / item, target / item
if dst.is_dir() and not dst.is_symlink():
shutil.rmtree(dst)
elif dst.exists() or dst.is_symlink():
dst.unlink()
(shutil.copytree if src.is_dir() else shutil.copy2)(src, dst)
(target / EXPORT_MARKER).write_text("Export von simulator/tools/build_bank.py – beim nächsten Export werden nur "
+ ", ".join(EXPORT_ITEMS) + " ersetzt, andere Dateien bleiben\n", encoding="utf-8")
log.info("Export nach %s geschrieben (Start: python3 -m http.server 8080 -d %s)", target, target)