cnb-rs doctor
cnb-rs doctor [--offline] [--json]健康检查 / 诊断报告。对标 brew doctor / npm doctor / gh auth status,一个命令快速验证 cnb-rs 当前是否能正常工作。
检查项
按 6 组共 15 项依次执行:
| 组 | 检查 | 通过条件 |
|---|---|---|
| Git | Git installed | git --version 返回 0,且主版本 >= 2 |
| Git | In git repository | git rev-parse --git-dir 成功 |
| Git | Remote parsed | 能从 origin URL 解析出 CNB 仓库路径 |
| Git | Working tree clean | git status --porcelain 输出为空(Warn 时显示未提交文件数) |
| Git | Upstream tracked | git rev-parse --abbrev-ref @{upstream} 成功(Warn 时提示无 upstream 无法直接 push/pull) |
| Network | API reachable | GET https://api.{domain}/ 返回 2xx/3xx/401/403(5 秒超时) |
| Auth | Keyring backend | 探测系统 keyring 后端可用性(不写入;显示「Windows Credential Manager / macOS Keychain / Secret Service」) |
| Auth | Token found | env / keyring / config 任一来源有 token |
| Auth | Token non-empty | token 字符串长度 > 0 |
| Auth | Token expiry | OAuth blob expires_at 校验:已过期 = Fail;< 7 天 = Warn;其他 = Ok;PAT / env 来源 Skip |
| API | GET /user | 调 client.me() 返回 OK(验证 token 有效) |
| API | GET / | 调 client.get_by_id() 返回 OK(验证 repo 可访问) |
| Config | Config file | ~/.cnb/config.toml 存在或可解析 |
| CLI | Version | 显示当前版本号(永远通过) |
| CLI | Latest version | 查官方仓库 wwvo/cnb-rs/cnb-rs 最新 release,对比当前版本:一致 = Ok,不一致 = Warn(提示可升级) |
输出
text
🩺 cnb-rs doctor
[Git]
✓ Git installed git version 2.53.0.windows.1
✓ In git repository
✓ Remote parsed https://cnb.cool/wwvo/cnb-rs/cnb-rs
⚠ Working tree clean 1 个未提交/未跟踪文件
✓ Upstream tracked origin/main
[Network]
✓ API reachable https://api.cnb.cool/ (245ms, HTTP 200 OK)
[Auth]
✓ Keyring backend 可用 (Windows Credential Manager)
✓ Token found env CNB_TOKEN
✓ Token non-empty 27 字符
· Token expiry PAT 或环境变量无过期信息
[API]
✓ GET /user logged in as illegal_name_cnb.by9...
✓ GET /{repo} wwvo/cnb-rs/cnb-rs
[Config]
✓ Config file C:\Users\Administrator\.cnb\config.toml
[CLI]
✓ Version cnb-rs v0.12.1
✓ Latest version 当前为最新版 (v0.12.1)
─3──5───────────────────────────────────
12/14 ok 1 warn 1 skip状态符号
| 符号 | 颜色 | 含义 |
|---|---|---|
✓ | 绿 | 通过 |
⚠ | 黄 | 警告(功能可用但有潜在问题,如不在 git 仓库内) |
✗ | 红粗 | 失败(功能不可用) |
· | 灰 | 跳过(如 --offline 时的 Network/API 检查) |
选项
--offline:跳过 Network 和 API 检查(适合无网络环境 / 排查纯本地配置问题)--json:以 JSON 格式输出(每个检查项含group/name/status/detail+ 汇总计数),便于 CI 与脚本解析
退出码
0:所有项通过(含 warn / skip)1:任一项 fail(适合 CIcnb-rs doctor || exit 1守门)
与其他命令的区别
| 命令 | 定位 |
|---|---|
cnb-rs doctor | 主动验证 每项配置真的可用(发实际 API 请求) |
cnb-rs info | 被动展示 当前生效配置(read-only) |
cnb-rs auth status | 专注 auth 的多账号 / token 过期 / ping 详细视图 |
cnb-rs config list | 配置文件 KV 完整 dump |
示例
bash
# 默认全检查
cnb-rs doctor
# 离线环境(跳过 Network 和 API)
cnb-rs doctor --offline
# CI 模式
cnb-rs doctor --json | jq '.summary'
cnb-rs doctor || exit 1
# 排查 token 问题:先离线确认本地配置,再联网验证
cnb-rs doctor --offline
cnb-rs doctor另请参阅
cnb-rs info — 当前配置展示
cnb-rs auth status — 完整认证状态
cnb-rs config list — 配置文件完整 dump
cnb-rs info — 当前配置展示
cnb-rs auth status — 完整认证状态
cnb-rs config list — 配置文件完整 dump