()
| 445 | |
| 446 | |
| 447 | def main() -> int: |
| 448 | parser = argparse.ArgumentParser(description="Benchmark interactive CLI memory using process-tree PSS") |
| 449 | parser.add_argument("--sessions", type=int, required=True) |
| 450 | parser.add_argument("--tools", nargs="*", default=DEFAULT_TOOLS) |
| 451 | parser.add_argument("--timeout", type=float, default=DEFAULT_TIMEOUT_S) |
| 452 | parser.add_argument("--settle", type=float, default=DEFAULT_SETTLE_S) |
| 453 | parser.add_argument("--cwd", default=os.getcwd()) |
| 454 | parser.add_argument("--json-out", default=None) |
| 455 | args = parser.parse_args() |
| 456 | |
| 457 | specs = build_specs() |
| 458 | cwd = Path(args.cwd).resolve() |
| 459 | results = [] |
| 460 | for name in args.tools: |
| 461 | spec = specs[name] |
| 462 | print(f"=== {name} ({args.sessions} session{'s' if args.sessions != 1 else ''}) ===", flush=True) |
| 463 | result = run_tool(spec, args.sessions, cwd, args.timeout, args.settle) |
| 464 | print(json.dumps(asdict(result), indent=2), flush=True) |
| 465 | results.append(asdict(result)) |
| 466 | payload = {"cwd": str(cwd), "sessions": args.sessions, "results": results} |
| 467 | if args.json_out: |
| 468 | Path(args.json_out).write_text(json.dumps(payload, indent=2)) |
| 469 | else: |
| 470 | print(json.dumps(payload, indent=2)) |
| 471 | return 0 |
| 472 | |
| 473 | |
| 474 | if __name__ == "__main__": |
no test coverage detected