# CLI 手册

`rs-zero-cli` crate 提供项目骨架、API、model、RPC 和兼容矩阵相关命令。仓库内建议通过 `cargo run -p rs-zero-cli -- ...` 使用；安装后命令名是 `rzcli`。

## 安装

```bash
cargo install rs-zero-cli --locked
# 本仓库开发时可改用本地路径安装：
cargo install --path crates/rs-zero-cli --locked
rzcli -v
rzcli --help
```

## 命令概览

安装后的命令：

```bash
rzcli new-rest <name> --dir <dir>
rzcli api validate -f <file.api>
rzcli api format -f <file.api> -o <output.api> [--force]
rzcli api openapi -f <file.api> -o <openapi.json>
rzcli api gen -f <file.api> -d <dir> [--name <name>] [--force]
rzcli model gen -s <schema.sql> -d <dir> [--name <name>] [--force] [--with-sqlx] [--with-redis-cache]
rzcli rpc gen -p <service.proto> -d <dir> [--name <name>] [--force]
rzcli goctl compat matrix
```

版本号：

```bash
rzcli -v
```

仓库内开发命令：

```bash
cargo run -p rs-zero-cli -- new-rest <name> --dir <dir>
cargo run -p rs-zero-cli -- api validate -f <file.api>
cargo run -p rs-zero-cli -- api format -f <file.api> -o <output.api> [--force]
cargo run -p rs-zero-cli -- api openapi -f <file.api> -o <openapi.json>
cargo run -p rs-zero-cli -- api gen -f <file.api> -d <dir> [--name <name>] [--force]
cargo run -p rs-zero-cli -- model gen -s <schema.sql> -d <dir> [--name <name>] [--force] [--with-sqlx] [--with-redis-cache]
cargo run -p rs-zero-cli -- rpc gen -p <service.proto> -d <dir> [--name <name>] [--force]
cargo run -p rs-zero-cli -- goctl compat matrix
```

## 不覆盖策略

生成类命令默认拒绝覆盖已有文件，并返回 `target file already exists` 或 `generated file already exists`。确认要覆盖时显式添加 `--force`。

## 相关测试

- `cargo test -p rs-zero-cli`
- `cargo test -p rs-zero-cli --test goctl_cli_compat`

## 限制

- CLI 是 Rust-first 生成器，不是完整 `goctl` 替代品。
- 默认测试不依赖 Go toolchain、goctl 二进制或外部服务。
