Expand description
W-51a:wanning init --install 直写安装——消掉「init 只打印、用户手动贴配置」断点。
职责边界(与生成器面的关系):条目内容永远来自 crate::generate_with
的产物(单一事实来源:install 只负责「放进宿主的正确位置」,不另写一份
字段面)——四个 mcp.json 平台解析产物里的 mcpServers.wanning,dsh 取产物
里的 - insert: 块,openclaw/hermes 的宿主命令行原样来自产物。
纪律(扩展 W-36「绝不覆盖」):
- 写前必读现有文件;merge 只动
mcpServers.wanning/wanning-gate块, 他人条目语义不动(mcp.json)或逐字节不动(cordis.patch.yml 追加在尾); - 写前备份
<file>.wanning.bak(先备份、后写入); - 已有 wanning 条目且内容一致 = 已是最新:逐字节不动、不产生备份、无 diff;
- 升级场景打字段级 diff;
--dry-run打印将做的全部动作、零落盘(连目录都不建); - codex 主配置是 TOML 文本面,文本合并的风险大于收益 → fail-closed 不支持
(报错给
--out人工指引,绝不乱写主配置); - openclaw/hermes 产出宿主 CLI 命令行,仅
--yes显式时才执行;执行前解析 宿主真实路径(显式--host-bin优先,否则 PATH),解析不到或宿主退出码 非 0 一律 fail-closed。
库层不读进程环境:一切宿主路径由 CLI 层显式传入(InstallEnv),测试确定性;
read_installed_entry 是 doctor(W-51b)与安装面共用的读取口。
Structs§
- Install
Env - 安装环境(全部显式传入;CLI 层负责读进程环境,库层不读 → 测试确定性)。
- Install
Options - 安装入参。
- Install
Report - 安装报告(CLI 打印成「安装报告」块)。
- Installed
Entry - 已安装条目(doctor 复用的读取面)。
Enums§
- Install
Error - 安装失败。全部 fail-closed:宁可拒装,绝不产出一份坏的/半吊子的配置。
- Install
State - 安装结果状态(人可读文案见
InstallState::label)。
Functions§
- install
- 执行安装(按平台分发)。
- read_
installed_ entry - 读一个平台已装的 wanning 条目;未装 =
Ok(None);配置形状坏 = 报错 (doctor 据此给修复指引,绝不静默当未装)。