feat(usable): package gui-host validation snapshot
Co-Authored-By: Paperclip <noreply@paperclip.ing>
This commit is contained in:
74
README.md
74
README.md
@@ -49,8 +49,17 @@
|
||||
- 面板焦点管理与基础键盘导航
|
||||
- `sqlite-local` 的真实 connect / inspect 路径
|
||||
- `sqlite-local` 的真实 query / results / export 工作流
|
||||
- PostgreSQL / MySQL 的 Docker demo live activation / query / export 路径
|
||||
- `Ready` / `Loading` / `Error` 基础状态框架
|
||||
|
||||
当前这组能力在 `dbtool-usable-v1` 口径下需要分层理解:
|
||||
|
||||
- TUI / shell baseline:已有直接执行证据
|
||||
- TUI / `sqlite-local` local live:只能记为 `partial`
|
||||
- TUI / PostgreSQL & MySQL network live:已具备 runner 内可重复 demo path
|
||||
|
||||
因此,`sqlite-local` 继续承担本地单机验证,而 PostgreSQL / MySQL 已可通过 `host.docker.internal` 与 `scripts/tui/live-network-smoke.sh` 完成 runner 内真实 network live 复验。
|
||||
|
||||
运行方式:
|
||||
|
||||
```bash
|
||||
@@ -63,7 +72,36 @@ cargo run -p dbtool-tui
|
||||
./target/debug/dbtool-tui
|
||||
```
|
||||
|
||||
详细范围与验收说明见 `apps/tui/README.md`,共享 UI 方案见 `plans/2026-03-26-dbtool-tui-shell-ui-scope.md`。
|
||||
最小可重复 smoke 入口:
|
||||
|
||||
```bash
|
||||
scripts/tui/smoke-tty.sh ./target/debug/dbtool-tui
|
||||
```
|
||||
|
||||
`dbtool-tui` 需要真实 TTY;`--help` 不是有效 smoke 入口。详细范围与验收说明见 `apps/tui/README.md`、`TUI_SMOKE_RUNBOOK.md`,共享 UI 方案见 `plans/2026-03-26-dbtool-tui-shell-ui-scope.md`。
|
||||
|
||||
## GUI Foundation Preview
|
||||
|
||||
仓库当前没有正式 Web / Desktop 前端工程,但已经提供最小可见展示层,用于评审未来 GUI 的信息架构与工作台交互:
|
||||
|
||||
- `gui/index.html`:GUI foundation 入口页
|
||||
- `gui/prototype/index.html`:静态数据库工作台原型
|
||||
- `gui/preview-server.mjs`:本地预览服务
|
||||
- `gui/README.md`:运行方式、范围说明与界面验收要点
|
||||
|
||||
运行方式:
|
||||
|
||||
```bash
|
||||
node gui/preview-server.mjs
|
||||
```
|
||||
|
||||
然后访问:
|
||||
|
||||
```text
|
||||
http://127.0.0.1:4173
|
||||
```
|
||||
|
||||
如果只想快速查看静态界面,也可以直接打开 `gui/index.html`。
|
||||
|
||||
## Workspace 结构
|
||||
|
||||
@@ -99,18 +137,42 @@ cargo run -p dbtool-cli -- query --driver sqlite --path examples/tmp/dbtool-demo
|
||||
cargo run -p dbtool-cli -- export --driver sqlite --path examples/tmp/dbtool-demo.sqlite --file examples/sql/sqlite/export_query.sql --format csv --output examples/tmp/export.csv
|
||||
```
|
||||
|
||||
如果当前 Linux 环境没有系统 `cc`,可以改用一个 C 兼容 linker,例如 `zig cc`:
|
||||
如果当前 Linux 环境没有系统 `cc` / `ar`,可以改用 `zig cc` + `zig ar`。对 bundled SQLite 路径,linker 包装器需要兼容 Cargo 传入的 GNU target flag:
|
||||
|
||||
```bash
|
||||
cat > /tmp/zig-cc <<'EOF'
|
||||
#!/bin/sh
|
||||
exec zig cc "$@"
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
args=()
|
||||
for arg in "$@"; do
|
||||
case "$arg" in
|
||||
--target=x86_64-unknown-linux-gnu)
|
||||
args+=("--target=x86_64-linux-gnu")
|
||||
;;
|
||||
*)
|
||||
args+=("$arg")
|
||||
;;
|
||||
esac
|
||||
done
|
||||
exec zig cc "${args[@]}"
|
||||
EOF
|
||||
cat > /tmp/zig-ar <<'EOF'
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
exec zig ar "$@"
|
||||
EOF
|
||||
chmod +x /tmp/zig-cc
|
||||
chmod +x /tmp/zig-ar
|
||||
export CC=/tmp/zig-cc
|
||||
export AR=/tmp/zig-ar
|
||||
export CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_LINKER=/tmp/zig-cc
|
||||
cargo test
|
||||
cargo run -p dbtool-cli -- --help
|
||||
|
||||
# 如果当前环境的 rustup 没有默认 toolchain,可显式指定 stable 工具链
|
||||
export RUSTC="$(rustup which --toolchain stable rustc)"
|
||||
export RUSTDOC="$(rustup which --toolchain stable rustdoc)"
|
||||
"$(dirname "$RUSTC")/cargo" test --workspace
|
||||
"$(dirname "$RUSTC")/cargo" build --release --bin dbtool
|
||||
./target/release/dbtool --help
|
||||
```
|
||||
|
||||
最小发布与产物 smoke 已定义在 `.github/workflows/release-smoke.yml` 与 `RELEASE_RUNBOOK.md`;当前 Linux 还可本地执行 `scripts/release/smoke-binary.sh` 和 `scripts/release/package-unix.sh` 复核产物命名与 checksum。
|
||||
|
||||
Reference in New Issue
Block a user