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。优先级:
--commit显式--branch显式- 当前目录处于 Git 仓库且 remote 与目标仓库一致 → 用本地
current_branch - 调 CNB API
get_head拿远端默认分支 - 兜底
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/logsAPI
| 步骤 | 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/head | GET | 路径模式且未提供 --branch / --commit |
权限要求: 上述 API 均为只读,最少权限分别是 repo-pr:r、repo-notes:r、repo-code:r、repo-basic-info:r。