跳转到内容

cnb-rs doctor

cnb-rs doctor [--offline] [--json]

健康检查 / 诊断报告。对标 brew doctor / npm doctor / gh auth status一个命令快速验证 cnb-rs 当前是否能正常工作

检查项

按 6 组共 15 项依次执行:

检查通过条件
GitGit installedgit --version 返回 0,主版本 >= 2
GitIn git repositorygit rev-parse --git-dir 成功
GitRemote parsed能从 origin URL 解析出 CNB 仓库路径
GitWorking tree cleangit status --porcelain 输出为空(Warn 时显示未提交文件数)
GitUpstream trackedgit rev-parse --abbrev-ref @{upstream} 成功(Warn 时提示无 upstream 无法直接 push/pull)
NetworkAPI reachableGET https://api.{domain}/ 返回 2xx/3xx/401/403(5 秒超时)
AuthKeyring backend探测系统 keyring 后端可用性(不写入;显示「Windows Credential Manager / macOS Keychain / Secret Service」)
AuthToken foundenv / keyring / config 任一来源有 token
AuthToken non-emptytoken 字符串长度 > 0
AuthToken expiryOAuth blob expires_at 校验:已过期 = Fail;< 7 天 = Warn;其他 = Ok;PAT / env 来源 Skip
APIGET /userclient.me() 返回 OK(验证 token 有效)
APIGET /client.get_by_id() 返回 OK(验证 repo 可访问)
ConfigConfig file~/.cnb/config.toml 存在或可解析
CLIVersion显示当前版本号(永远通过)
CLILatest 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(适合 CI cnb-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

另请参阅

Released under the MIT License.