#!/usr/bin/env python3 """跑一段 JS 到 EasyEDA 桥接。用法: python .claude/eda.py file.js 或 echo 'code' | python .claude/eda.py -""" import json, sys, urllib.request, urllib.error def port(): for p in range(49620, 49630): try: with urllib.request.urlopen(f"http://127.0.0.1:{p}/health", timeout=1) as r: if json.loads(r.read()).get("service") == "easyeda-bridge": return p except Exception: pass sys.exit("桥接服务未启动") def run(code, timeout=180): req = urllib.request.Request(f"http://127.0.0.1:{port()}/execute", data=json.dumps({"code": code}).encode("utf-8"), headers={"Content-Type": "application/json"}) try: with urllib.request.urlopen(req, timeout=timeout) as r: return json.loads(r.read()) except urllib.error.HTTPError as e: return {"httpError": e.code, "body": e.read().decode("utf-8", "replace")} if __name__ == "__main__": src = sys.stdin.read() if sys.argv[1] == "-" else open(sys.argv[1], encoding="utf-8").read() out = run(src) print(json.dumps(out, ensure_ascii=False, indent=1)[:20000])