feat(client): Mac aider-watch client (B1-B4: scaffolding + api_client + buffer + aiderw)
This commit is contained in:
55
scripts/aider_watch_client/aider_watch_client/cli.py
Normal file
55
scripts/aider_watch_client/aider_watch_client/cli.py
Normal file
@@ -0,0 +1,55 @@
|
||||
# aider-watch-client cli | 2026-04-20 @ Asia/Taipei
|
||||
"""aider-watch subcommands: doctor, flush."""
|
||||
from __future__ import annotations
|
||||
import argparse, subprocess, sys
|
||||
from aider_watch_client import config, buffer
|
||||
from aider_watch_client.api_client import post_events
|
||||
|
||||
|
||||
def cmd_doctor(_a) -> int:
|
||||
ok = True
|
||||
print("== aider-watch doctor ==")
|
||||
for k in ("AIDER_API_URL", "AIDER_WEBHOOK_SECRET"):
|
||||
v = config.get(k)
|
||||
mark = "ok" if v else "FAIL"
|
||||
print(f" env {k:30s} {mark}")
|
||||
if not v:
|
||||
ok = False
|
||||
# API reachability
|
||||
try:
|
||||
import requests
|
||||
url = config.get("AIDER_API_URL", required=True)
|
||||
# use healthz if available; otherwise try the url itself (HEAD won't post events)
|
||||
health = url.replace("/aider/events", "/healthz")
|
||||
r = requests.get(health, timeout=3)
|
||||
mark = "ok" if r.status_code < 500 else "FAIL"
|
||||
print(f" API reachable {mark} {r.status_code} ({health})")
|
||||
if r.status_code >= 500:
|
||||
ok = False
|
||||
except Exception as e:
|
||||
print(f" API reachable FAIL {e}")
|
||||
ok = False
|
||||
# launchd
|
||||
res = subprocess.run(["launchctl", "list"], capture_output=True, text=True)
|
||||
mark = "ok" if "com.awoooi.aider-flush" in res.stdout else "FAIL"
|
||||
print(f" launchd aider-flush {mark}")
|
||||
return 0 if ok else 1
|
||||
|
||||
|
||||
def cmd_flush(_a) -> int:
|
||||
n = buffer.flush(post_fn=post_events)
|
||||
print(f"flushed {n} events")
|
||||
return 0
|
||||
|
||||
|
||||
def main() -> int:
|
||||
p = argparse.ArgumentParser(prog="aider-watch")
|
||||
sub = p.add_subparsers(dest="cmd", required=True)
|
||||
sub.add_parser("doctor").set_defaults(func=cmd_doctor)
|
||||
sub.add_parser("flush").set_defaults(func=cmd_flush)
|
||||
a = p.parse_args()
|
||||
return a.func(a)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
sys.exit(main())
|
||||
Reference in New Issue
Block a user