logo
0
0
WeChat Login

xcnb - CNB Platform CLI Tool

请注意, 本工具并非 CNB 平台的官方工具

CNB 平台的 Rust 命令行工具,提供仓库管理、Release 发布、资产上传下载、AI 对话等功能。

快速使用

curl -SsL -o /usr/local/bin/xcnb https://cnb.cool/maikebuke/Tools/xcnb/-/releases/latest/download/xcnb-x86_64-unknown-linux-gnu 
chmod +x /usr/local/bin/xcnb
xcnb --eula

特性

  • 仓库管理 - 创建、查看、列出、删除仓库
  • Release 管理 - 完整的 Release 生命周期管理
  • 资产管理 - 带进度条的文件上传/下载
  • AI 对话 - 集成 CNB AI 功能
  • YAML 配置 - 灵活的配置文件支持
  • 彩色输出 - 美观的表格和进度条显示

安装

cargo build --release
# 二进制文件位于 target/release/xcnb

配置

初始化配置文件

# 创建本地配置(当前目录)
xcnb config init --local

# 创建全局配置(~/.xcnb/config.yml)
xcnb config init --global

配置文件格式

创建 .xcnb.yml~/.xcnb/config.yml

# API 配置(必需)
api_endpoint: https://api.cnb.cool/v1
token: cnb_your_token_here

# 默认仓库/组织
repo_slug: your-group/your-repo
group_slug: your-group

# Release 默认值
release_defaults:
  tag: xcnb-store
  name: Auto Release
  body: ""
  target: main

# AI 默认配置
ai:
  model: claude-sonnet-4
  temperature: 0.7
  scope: auto

环境变量

如果配置文件中未设置,工具会回退到环境变量:

export CNB_API_ENDPOINT=https://api.cnb.cool/v1
export CNB_TOKEN=cnb_xxx
export CNB_REPO_SLUG=group/repo
export CNB_GROUP_SLUG=group

配置优先级

命令行 --repo/--group > 本地 .xcnb.yml > 全局 ~/.xcnb/config.yml > 环境变量 > 报错

使用方法

仓库管理

# 查看当前仓库信息
xcnb repo info

# 列出组织下的仓库
xcnb repo list --search "cli" --page 1 --page-size 20
# 快捷方式(先列出仓库再列出默认 tag 的资产)
xcnb list

# 创建仓库
xcnb repo create my-project --visibility private --license MIT

# 删除仓库
xcnb repo delete --yes

Release 管理

# 列出 releases
xcnb release list --page 1

# 获取 release
xcnb release get v1.0.0
xcnb release get --latest
xcnb release get --id 12345

# 创建 release (TAG 作为位置参数)
xcnb release create v1.0.0 --name "First Release"

# 更新 release
xcnb release update 12345 --name "Updated Name" --body "New description"

# 删除 release
xcnb release delete 12345

资产管理(含进度条)

# 列出资产
xcnb asset list --tag v1.0.0

# 上传资产(带进度条,非默认 tag 需显式允许创建)
xcnb asset upload ./build/app.zip --tag v1.0.0 --auto-create
# 快捷方式
xcnb upload ./build/app.zip --tag v1.0.0 --auto-create
# [████████████████████] 100% 15.2 MB/15.2 MB

# 下载资产(带进度条)
xcnb asset download app.zip --tag v1.0.0 --out ./downloads/

# 删除资产
xcnb asset delete 789 --release-id 12345

AI 对话

# 单次问答
xcnb ai ask "如何使用这个 API?"
xcnb ai ask "代码质量如何?" --scope repo --thinking

# 交互式多轮对话
xcnb ai chat --scope repo --temperature 0.4
# 快捷方式
xcnb chat --scope repo --temperature 0.4
# 进入交互界面后支持方向键查看历史、Ctrl+C 退出,响应流式输出
# 会话命令:/help 查看帮助、/reset 清空上下文、/exit 退出

配置管理

# 查看当前配置
xcnb config show
xcnb config show --source  # 显示配置来源

全局选项

# 覆盖仓库
xcnb --repo mygroup/another-repo repo info

# 覆盖组织
xcnb --group another-org repo list

# 指定配置文件
xcnb --config /path/to/config.yml repo info

# 接受 EULA(首次使用必需,可加到任意命令)
xcnb --eula repo info

EULA 声明

首次运行 xcnb 时会提示“这是非官方的 CNB 工具”,需要输入 YES 同意最终用户许可协议(EULA)才能继续。如果在 CI/自动化环境中没有标准输入,请务必添加 --eula 以避免阻塞。--eula 会把同意状态写入 ~/.xcnb/config.yml,后续无需重复确认。

命令概览

repo - 仓库管理

  • info - 查看仓库信息
  • list - 列出组织仓库
  • create <NAME> - 创建仓库
  • delete - 删除仓库

release - Release 管理

  • list - 列出 releases
  • get [TAG] - 获取 release
  • create <TAG> - 创建 release
  • update <ID> - 更新 release
  • delete <ID> - 删除 release

asset - 资产管理

  • list - 列出资产
  • upload <FILE> - 上传资产(带进度条)
  • download <IDENTIFIER> - 下载资产(带进度条)
  • delete <ASSET_ID> - 删除资产

ai - AI 对话

  • ask <PROMPT> - 单次问答
  • chat - 交互式多轮对话(流式输出,内置 /help /reset /exit 指令)

config - 配置管理

  • init - 初始化配置文件
  • show - 显示当前配置

技术栈

  • Rust - 核心语言
  • Clap - CLI 参数解析
  • Tokio - 异步运行时
  • Reqwest - HTTP 客户端
  • Serde - 序列化/反序列化
  • Indicatif - 进度条显示
  • Comfy-table - 表格格式化
  • Console - 终端彩色输出

项目结构

xcnb/
├── src/
│   ├── main.rs           # 入口
│   ├── error.rs          # 错误类型
│   ├── utils.rs          # 工具函数
│   ├── cli/              # CLI 层
│   │   ├── args.rs       # Clap 参数定义
│   │   ├── commands/     # 命令处理器
│   │   └── output/       # 输出格式化(表格/进度条)
│   ├── client/           # 客户端层
│   │   ├── context.rs    # 上下文管理
│   │   ├── http.rs       # HTTP session
│   │   └── sessions.rs   # 双会话管理
│   ├── services/         # 服务层
│   │   ├── repos.rs      # 仓库服务
│   │   ├── releases.rs   # Release 服务
│   │   └── ai.rs         # AI 服务
│   ├── models/           # 数据模型
│   │   ├── repo.rs
│   │   ├── release.rs
│   │   └── ai.rs
│   └── config/           # 配置管理
│       ├── schema.rs     # 配置结构
│       └── file.rs       # 文件读写
├── Cargo.toml
└── README.md

License

Apache-2.0

About

No description, topics, or website provided.
Language
Rust99.3%
Shell0.7%