ics-simlab-config-gen-claude/tools/pipeline.py

59 lines
1.7 KiB
Python

import argparse
from pathlib import Path
import subprocess
import sys
def run(cmd: list[str]) -> None:
print("\n$ " + " ".join(cmd))
r = subprocess.run(cmd)
if r.returncode != 0:
raise SystemExit(r.returncode)
def main() -> None:
ap = argparse.ArgumentParser(description="End-to-end: config -> IR -> logic -> validate")
ap.add_argument("--config", required=True, help="Path to configuration.json")
ap.add_argument("--ir-out", default="outputs/ir/ir_v1.json", help="IR output path")
ap.add_argument("--logic-out", default="outputs/logic_ir", help="Logic output directory")
ap.add_argument("--model", default="tank", choices=["tank"], help="Heuristic model for IR draft")
ap.add_argument("--overwrite", action="store_true", help="Overwrite outputs")
args = ap.parse_args()
Path(args.ir_out).parent.mkdir(parents=True, exist_ok=True)
Path(args.logic_out).mkdir(parents=True, exist_ok=True)
cmd1 = [
sys.executable, "-m", "tools.make_ir_from_config",
"--config", args.config,
"--out", args.ir_out,
"--model", args.model,
]
if args.overwrite:
cmd1.append("--overwrite")
run(cmd1)
cmd2 = [
sys.executable, "-m", "tools.compile_ir",
"--ir", args.ir_out,
"--out-dir", args.logic_out,
]
if args.overwrite:
cmd2.append("--overwrite")
run(cmd2)
cmd3 = [
sys.executable, "-m", "tools.validate_logic",
"--config", args.config,
"--logic-dir", args.logic_out,
"--check-callbacks",
"--check-hil-init",
]
run(cmd3)
print("\nOK: pipeline completed successfully")
if __name__ == "__main__":
main()