cnb-rs badge get
cnb-rs badge get <sha> <badge> [options]获取指定 badge 的 SVG 或 JSON 元数据。默认 SVG 输出到 stdout(适合重定向),-f json 拿结构化元数据,-o FILE 写文件,-w/--web 浏览器打开。
选项
<sha>: Commit SHA 或latest(必填;latest拿默认分支最新 commit 的 badge)<badge>: Badge 名称(必填,如ci/pipeline-as-code、ci/status/push;用cnb-rs badge list查可用名)-f, --format <svg|json>: 响应格式(默认svg)。json返结构化label / message / color / logo字段-B, --branch <BRANCH>: 指定分支(传则拿该分支最新 commit 的 badge,不传拿默认分支)-o, --output <FILE>: 响应写到文件(不指定则到 stdout)-w, --web: 浏览器打开 badge URL(不拉取、不认证)
继承的全局选项:
--repo <REPO>: 指定仓库路径(格式:group/repo)--domain <DOMAIN>: 指定目标域名(默认:cnb.cool)
错误处理
CNB badge 端点设计:sha 不存在 / badge 名无效时返 200 + JSON 错误对象(不是 4xx)。 CLI 检测响应不以 <svg 开头时解析 errorMessage friendly bail,不会污染 stdout。
示例
bash
# SVG 到 stdout(重定向保存为文件)
$ cnb-rs badge get latest ci/pipeline-as-code > badge.svg
# 直接写文件
$ cnb-rs badge get latest ci/pipeline-as-code -o badge.svg
# 拿 JSON 元数据(label / message / color / logo)
$ cnb-rs badge get latest ci/pipeline-as-code -f json
{
"label": "pipeline",
"message": ".cnb.yml",
"color": "orange",
"logo": "data:image/svg+xml;base64,..."
}
# 加 --json 全局 flag 走 cnb-rs 统一 pretty 格式
$ cnb-rs --json badge get latest ci/pipeline-as-code -f json
# 拿指定分支最新 commit 的 badge
$ cnb-rs badge get latest ci/pipeline-as-code -B main -f json
# 浏览器打开 badge URL(公开访问、无认证)
$ cnb-rs badge get latest ci/pipeline-as-code --web
# 拿具体 commit 的 badge(不走 latest)
$ cnb-rs badge get $(git rev-parse HEAD) ci/pipeline-as-code -o badge.svg
# 错误处理示例:badge 名无效时 friendly bail
$ cnb-rs badge get latest bogus_name
错误: badge `bogus_name` 在 sha `latest` 下不存在:ENOENT: no such file or directory, ...