跳转到内容

cnb-rs browse

cnb-rs browse [<number> | <path> | <commit-sha>] [flags]

在浏览器中打开 CNB 仓库或具体资源页面,行为对齐 gh browse

仓库根据当前 Git remote 自动推断,也可通过全局 --repo 显式指定。

参数

  • [<number>]: Issue 或 PR 编号;通过 CNB API 自动区分是 Issue 还是 PR
  • [<path>]: 文件或目录路径,可带行号锚点 :行号:起-止;通过 CNB API 区分文件 / 目录
  • [<commit-sha>]: 7-40 个字符的十六进制 commit SHA(且至少包含一个字母)
  • [-/...]: 直接拼接的 raw 子路径(向后兼容老用法,如 cnb-rs browse -/issues

选项

  • -b, --branch <BRANCH>: 解析路径或目录时使用的分支(与 --commit 互斥)
  • -c, --commit <COMMIT>: 解析路径时使用的 commit SHA(与 --branch 互斥)
  • -n, --no-browser: 不打开浏览器,仅把 URL 打印到 stdout(脚本可消费)
  • -s, --settings: 打开仓库 Settings 页面
  • -r, --releases: 打开 Releases 页面
  • -w, --wiki: 打开 Wiki 页面
  • -a, --builds: 打开 Builds(事件 / 流水线)页面,对齐 gh --actions
  • --blame: 以 blame 视图打开文件(需搭配文件路径)

--settings / --releases / --wiki / --builds 互斥,且不接受位置参数。--blame 仅适用于文件路径,不能与 Issue/PR 编号、commit SHA 同用。

继承的全局选项:

  • --repo <REPO>: 指定仓库路径(格式:group/repo
  • --domain <DOMAIN>: 指定目标域名(默认:cnb.cool

ref 解析顺序

仅在位置参数为「路径」时需要 ref。优先级:

  1. --commit 显式
  2. --branch 显式
  3. 当前目录处于 Git 仓库且 remote 与目标仓库一致 → 用本地 current_branch
  4. 调 CNB API get_head 拿远端默认分支
  5. 兜底 HEAD

示例

bash
# 打开仓库首页
$ cnb-rs browse

# 打开 Issue 或 PR(自动区分)
$ cnb-rs browse 217

# 打开 commit 页面
$ cnb-rs browse 77507cd94ccafcf568f8560cfecde965fcfa6300

# 打开文件
$ cnb-rs browse src/main.rs

# 打开文件并跳到指定行
$ cnb-rs browse src/main.rs:312

# 打开文件指定行区间
$ cnb-rs browse src/main.rs:10-30

# 以 blame 视图打开
$ cnb-rs browse src/main.rs:312 --blame

# 在指定分支或 commit 上看文件
$ cnb-rs browse src/main.rs --branch bug-fix
$ cnb-rs browse src/main.rs --commit 77507cd

# 打开目录
$ cnb-rs browse src/

# 跳转到特定页面
$ cnb-rs browse --settings
$ cnb-rs browse --releases
$ cnb-rs browse --wiki
$ cnb-rs browse --builds

# 只输出 URL,不打开浏览器(适合 shell 管道)
$ cnb-rs browse 217 --no-browser
$ cnb-rs browse src/main.rs:312 -n | xclip -selection clipboard

# 兼容老用法:直接拼 raw 子路径
$ cnb-rs browse -/issues
$ cnb-rs browse -/pulls
$ cnb-rs browse -/build/logs

API

步骤API方法说明
区分 Issue / PR${CNB_API_ENDPOINT}/{repo}/-/issues/{number}GET数字位置参数时调用
${CNB_API_ENDPOINT}/{repo}/-/pulls/{number}GET与上一步并发执行
区分 tree / blob${CNB_API_ENDPOINT}/{repo}/-/git/contents/{path}GET路径位置参数且未指定锚点 / 后缀
取远端默认分支${CNB_API_ENDPOINT}/{repo}/-/git/headGET路径模式且未提供 --branch / --commit

权限要求: 上述 API 均为只读,最少权限分别是 repo-pr:rrepo-notes:rrepo-code:rrepo-basic-info:r

另请参阅

Released under the MIT License.