跳转到内容

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-codeci/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, ...

另请参阅

Released under the MIT License.