Files
dbtool-cli-v1/DEVELOPING.md
Paperclip CTO 7424491944
Some checks failed
release-smoke / macos-13 / x86_64-apple-darwin (push) Has been cancelled
release-smoke / ubuntu-latest / x86_64-unknown-linux-gnu (push) Has been cancelled
release-smoke / windows-latest / x86_64-pc-windows-msvc (push) Has been cancelled
chore: bootstrap independent git workflow
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-26 03:49:29 +00:00

64 lines
2.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Developing dbtool-cli-v1
## 本地开发
```bash
cargo fmt
cargo test
cargo run -p dbtool-cli -- --help
```
Git 仓库、branch、commit、push 与 agent 认证规范见 `GIT_WORKFLOW.md`
如果当前 Linux 环境没有 `cc`,改用一个 C 兼容 linker例如 `zig cc`
```bash
cat > /tmp/zig-cc <<'EOF'
#!/bin/sh
exec zig cc "$@"
EOF
chmod +x /tmp/zig-cc
export CC=/tmp/zig-cc
export CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_LINKER=/tmp/zig-cc
cargo test
cargo run -p dbtool-cli -- --help
```
## 当前 crate 责任
- `apps/cli`:命令行入口、参数解析、退出码与用户可见输出
- `crates/db-core`:领域模型、输入约束、公共错误
- `crates/db-config`:连接 profile、配置抽象、脱敏摘要
- `crates/db-drivers`:驱动 trait 与按数据库分发的边界
## 当前约束
- 当前 PostgreSQL、MySQL 与 SQLite 已实现真实数据库 I/O
- `export` 已通过共享查询结果模型实现 CSV / JSON 写出
- 子命令的 flag 形状已稳定到可供 QA / GUI 复用的程度,后续只能做兼容性演进
- 错误信息必须避免泄露密码等敏感信息
- PostgreSQL 非参数化查询使用 simple query可执行多语句 SQL 文件;带 `--param` 时会切到 prepared execution因此应传单条参数化语句
- MySQL 非参数化查询使用 text protocol可执行多语句 SQL 文件;带 `--param` 时会切到 positional prepared execution因此应传单条参数化语句
- MySQL `inspect` 继续复用 `--schema` flag但语义上对应数据库名
- SQLite `inspect` 也复用 `--schema` flag但 demo 路径固定使用 `main`
- SQLite 查询当前按单条 statement 执行;多语句 SQL 会返回显式错误,而不是隐式忽略后续语句
- `export` 当前要求查询必须返回结果集;非结果集语句会被明确拒绝
- `export` 当前要求父目录已存在,且默认拒绝覆盖已有文件,除非显式传入 `--overwrite`
## 验证路径
- `cargo build` 验证 workspace 可编译
- `cargo test` 验证核心输入校验、脱敏逻辑和 CLI 参数解析
- `cargo run -p dbtool-cli -- --help` 验证 CLI 可启动
- `cargo run -p dbtool-cli -- connect --help``cargo run -p dbtool-cli -- inspect --help` 验证关键子命令可启动
- `cargo run -p dbtool-cli -- query ... --file <sql>` 验证 SQL 文件读取入口
- `cargo run -p dbtool-cli -- export ... --format <csv|json> --output <path>` 验证导出路径
- `./examples/scripts/bootstrap-sqlite.sh` + SQLite CLI happy path 验证本地样例数据库闭环
- 无系统 linker 的 Linux 环境使用 `zig cc` 作为 host linker 验证路径
## 发布 smoke
- GitHub Actions baseline: `.github/workflows/release-smoke.yml`
- 发布与回滚说明:`RELEASE_RUNBOOK.md`
- 本地 Linux 产物复核:`scripts/release/smoke-binary.sh <binary>``scripts/release/package-unix.sh <target-triple> <binary>`