"""woc-bridge FastAPI 薄入口(bridge 1.8.0 重构后)。 监听容器内 :8088,通过 xdotool/xclip 操作微信窗口、读取微信本地 DB, 提供收发消息等能力。 由 s6-rc 服务 `svc-woc-bridge` 常驻拉起(见 s6/woc-bridge/run), 启动前会等待微信窗口出现(最多 5 分钟),以确保 X 会话就绪。 本文件仅负责: 1. 解析命令行参数(--listen / --wechat-db / --display) 2. 构造 BridgeConfig 并调用 _init_state 初始化全局状态 3. 启动 uvicorn 所有业务逻辑(路由 / DB 协调 / UI 自动化 / 消息推送)均在 woc_bridge 包内。 """ from __future__ import annotations import argparse import uvicorn from woc_bridge.app import app, _init_state from woc_bridge.config import BridgeConfig def _parse_args() -> argparse.Namespace: """解析命令行参数。""" parser = argparse.ArgumentParser(description="woc-bridge FastAPI 服务") parser.add_argument( "--listen", default="0.0.0.0:8088", help="监听地址,格式 host:port,默认 0.0.0.0:8088", ) parser.add_argument( "--wechat-db", default="/config", help="微信数据根目录,默认 /config(_find_db_path 会递归查找 message_0.db)", ) parser.add_argument( "--display", default=":1", help="X server display,默认 :1", ) return parser.parse_args() if __name__ == "__main__": args = _parse_args() cfg = BridgeConfig.from_args_and_env(args) _init_state(cfg) host, _, port_str = cfg.listen.rpartition(":") if not host: host = "0.0.0.0" port = int(port_str) if port_str else 8088 uvicorn.run(app, host=host, port=port)