jkooe
|
caa5b8a2c1
|
refactor(cli): 拆分 1977 行的 index.ts 为 11 个模块(纯搬移,零逻辑变更)
## 动机(审查报告 §5.5 / 阿特拉斯报告)
单文件 1977 行难维护、难 review、难以定位改动影响面。本次按职责拆分:
src/index.ts 315 行 入口:参数解析后按子命令调度
src/options.ts 155 行 命令行参数解析(parseArgs)
src/help.ts 75 行 帮助文本
src/types.ts 74 行 共享类型与常量
src/core.ts 236 行 运行时:客户端/守护进程代理/输出工具/--node 覆盖
src/cmd/conn.ts 217 行 连接与设备(connect/keygen/nodes/use/remove/discover)
src/cmd/system.ts 278 行 系统面(info/status/ps/services/exec/restart/audit/metrics/invoke/apps/install)
src/cmd/ops.ts 499 行 自动化(bg/tasks/task/fanout/record/deploy/events/macro/clip)
src/cmd/gui.ts 173 行 图形(screen/screenshot/mouse/key)
src/cmd/fs.ts 172 行 文件(ls/stat/cat/pull/push)
src/cmd/net.ts 116 行 网络两阶段提交
## 拆分中处理的真实工程问题(都不是「机械搬移」能躲过的)
1. **跨模块可变状态**:`--node` 的全局覆盖 `currentNodeOverride` 原来是模块级 let。
ESM 的 import 绑定是只读的,直接 import 后赋值编译不过 → 改为访问器
setNodeOverride()/getNodeOverride()(并把「为什么不能用变量」写进注释)。
2. **散落在函数之间的顶层常量**:CHUNK_BYTES 恰好位于两个函数之间,按函数切分会
误入别的模块 → 归入 types.ts 统一导出。DAEMON_SOCK 同理并去重。
3. 导入按模块职责补齐(parseArgs/getClientConfig 等)。
## 验证
- 构建 6 包全过;单测 124/124;e2e 26/26
- **真机 CLI 冒烟 25 条命令全通过**(CLI 不在 e2e 覆盖内,必须实测):
info/status/ps/services/ls/metrics/audit/nodes/net status/screen/window.list/tasks/clip/apps/exec
+ push/stat/cat/pull(校验回读内容一致)/screenshot/key type/bg/record/mouse/discover
|
2026-10-01 21:04:24 +08:00 |
|