from __future__ import annotations import subprocess import sys import os from pathlib import Path PROJECT_ROOT = Path(__file__).resolve().parent.parent SCRIPT_DIR = PROJECT_ROOT / "scripts" CASES: tuple[tuple[str, tuple[str, ...]], ...] = ( ( "Boss cylindrical first-level topology and plan guards", ("verify_boss_first_level_topology.py",), ), ( "Boss diameter, height and axis local rebuilds", ("verify_boss_resize.py",), ), ( "Rectangular boss/pocket size, depth, center and top-step edits", ("verify_prismatic_feature.py",), ), ( "Property editor keeps generic Face edits out of boss features", ("verify_property_editor_specs.py",), ), ) def main() -> int: env = os.environ.copy() env.setdefault("PYTHONIOENCODING", "utf-8") env.setdefault("PYTHONUTF8", "1") for index, (label, command) in enumerate(CASES, start=1): print(f"\n[{index}/{len(CASES)}] {label}", flush=True) subprocess.run( (sys.executable, str(SCRIPT_DIR / command[0]), *command[1:]), cwd=PROJECT_ROOT, env=env, check=True, ) print("\nBoss edit suite passed.", flush=True) return 0 if __name__ == "__main__": raise SystemExit(main())