e9606b5f6d
ci / gate (push) Successful in 3m14s
Distribution prep on the road to public availability (plan steps 2–3a). - Cargo.toml: publish-ready (drop publish=false; homepage/keywords/ categories/exclude) + [package.metadata.binstall] with per-target overrides (linux-gnu->musl, windows-msvc->gnu/gnullvm). dry-run clean. - scripts/install.ps1: Windows `irm | iex` one-liner — written but untested here (no PowerShell; validate on Windows). README Windows block. - README.md (new); LICENSE-MIT + LICENSE-APACHE (dual, (c) Lazy Evaluation Ltd); CONTRIBUTING.md (inbound=outbound dual-license note). - ADR-0055 Amendment 1 (install.ps1), ADR-0056 (crates.io/binstall), README index + plan updates. The actual `cargo publish` remains a gated maintainer step (token, irreversible) at a new tagged release; real cargo-binstall validation pending.
127 lines
5.9 KiB
TOML
127 lines
5.9 KiB
TOML
[package]
|
|
name = "rdbms-playground"
|
|
version = "0.1.0"
|
|
edition = "2024"
|
|
description = "A cross-platform TUI playground for learning relational databases."
|
|
license = "MIT OR Apache-2.0"
|
|
repository = "https://git.lazyeval.net/oli/rdbms-playground"
|
|
homepage = "https://relplay.org"
|
|
readme = "README.md"
|
|
keywords = ["database", "sql", "tui", "learning", "playground"]
|
|
categories = ["command-line-utilities", "database"]
|
|
# Keep the published crate to the code that builds the binary — the website,
|
|
# decision records, and CI plumbing are repo-only (ADR-0056).
|
|
exclude = ["/website", "/docs", "/.gitea", "/.codegraph"]
|
|
# `publish = false` removed (ADR-0056): the crate is intended for
|
|
# crates.io. The actual `cargo publish` is a deliberate, irreversible
|
|
# maintainer step (needs the crates.io token) — do it at a tagged release
|
|
# whose assets the binstall metadata below points at.
|
|
|
|
[dependencies]
|
|
anyhow = "1.0.102"
|
|
# Native system-clipboard for the `copy` command (ADR-0041). Text
|
|
# only: `default-features = false` drops the heavy `image` crate. On
|
|
# Linux this is X11-only — `wayland-data-control` is deliberately
|
|
# omitted (it ~doubles the dep tree), as OSC 52 covers native-Wayland
|
|
# sessions and XWayland covers the rest.
|
|
arboard = { version = "3.6.1", default-features = false }
|
|
base64 = "0.22.1"
|
|
# `clock` brings local-timezone support (UTC → machine local) for
|
|
# the undo-dialog snapshot timestamp (issue #13). No locale feature:
|
|
# month names stay English; `unstable-locales` is deliberately avoided.
|
|
chrono = { version = "0.4.44", default-features = false, features = ["clock"] }
|
|
crossterm = { version = "0.29.0", features = ["event-stream"] }
|
|
csv = "1.4.0"
|
|
directories = "6.0.0"
|
|
# Realistic fake-data generators for the `seed` command (ADR-0048):
|
|
# names, emails, addresses, companies, lorem, etc. Default features
|
|
# only — the basic fakers need no flags; date/datetime values are
|
|
# generated in-house (rand + the existing `chrono`) for the bounded
|
|
# windows ADR-0048 D8 requires, so `fake`'s `chrono` feature is
|
|
# deliberately omitted. No commerce/product module exists, so the
|
|
# `product` generator is hand-rolled (D9).
|
|
fake = "5"
|
|
futures-util = "0.3.32"
|
|
gethostname = "1.1.0"
|
|
rand = "0.10.1"
|
|
ratatui = "0.30.0"
|
|
rusqlite = { version = "0.39.0", features = ["backup", "bundled", "column_metadata"] }
|
|
serde = { version = "1.0.228", features = ["derive"] }
|
|
# Maintained fork of `serde_yaml` (the deprecated original). Replaces
|
|
# `serde_yml`, which was archived as unsound + unmaintained
|
|
# (RUSTSEC-2025-0068, and its `libyml` backend RUSTSEC-2025-0067).
|
|
serde_norway = "0.9.42"
|
|
sysinfo = { version = "0.39.0", default-features = false, features = ["system"] }
|
|
tokio = { version = "1.52.2", features = ["full"] }
|
|
tracing = "0.1.44"
|
|
tracing-subscriber = { version = "0.3.23", features = ["env-filter"] }
|
|
zip = { version = "5.1.1", default-features = false, features = ["deflate"] }
|
|
|
|
[dev-dependencies]
|
|
insta = { version = "1.47.2", features = ["yaml"] }
|
|
pretty_assertions = "1.4.1"
|
|
tempfile = "3.27.0"
|
|
|
|
# Dev/test build hygiene (see CLAUDE.md "Build hygiene"). `cargo test`
|
|
# links ~25 separate integration-test binaries, each statically
|
|
# embedding the bundled engine + every dependency; the `test` profile
|
|
# inherits these from `dev`.
|
|
# - incremental = false: the incremental cache reached 16 GB here for
|
|
# little benefit in a full-suite workflow; disabling it keeps target/
|
|
# bounded.
|
|
# - debug = "line-tables-only": full debug info (the default `debug = 2`)
|
|
# is ~85-90% of each test binary; line tables keep file:line in panics
|
|
# and backtraces (we debug via `tracing` logs, not a step-debugger) at
|
|
# a fraction of the size.
|
|
[profile.dev]
|
|
incremental = false
|
|
debug = "line-tables-only"
|
|
|
|
# Release builds back the distributed binaries (D2: single static binary).
|
|
# strip = "symbols" drops the symbol table at link time so the shipped artifact
|
|
# is lean (≈13 MB → 10 MB for the musl build) without a separate strip step.
|
|
[profile.release]
|
|
strip = "symbols"
|
|
|
|
[lints.rust]
|
|
unsafe_code = "forbid"
|
|
unreachable_pub = "warn"
|
|
|
|
[lints.clippy]
|
|
all = { level = "warn", priority = -1 }
|
|
nursery = { level = "warn", priority = -1 }
|
|
# Allow common false-positives that don't materially improve our code.
|
|
module_name_repetitions = "allow"
|
|
missing_errors_doc = "allow"
|
|
missing_panics_doc = "allow"
|
|
|
|
# cargo-binstall (ADR-0056): let `cargo binstall rdbms-playground` fetch the
|
|
# prebuilt release binary instead of compiling from source. Our release assets
|
|
# are BARE binaries (no archive) named `rdbms-playground-v<version>-<target>`
|
|
# (`.exe` on Windows) with `.sha256` sidecars (ADR-ci-003), so `pkg-fmt = "bin"`.
|
|
# `{ version }` excludes the leading `v`, so the template spells `v{ version }`.
|
|
#
|
|
# Target mapping: macOS host triples match our asset triples directly. But we
|
|
# ship the fully-static *-linux-MUSL build (glibc hosts are *-linux-gnu) and
|
|
# *-windows-GNU/GNULLVM (most Windows hosts are *-msvc), so those common host
|
|
# triples need explicit overrides pointing at the asset we actually publish.
|
|
#
|
|
# NOTE: unverified against a real `cargo binstall` run (binstall isn't a dep and
|
|
# nothing is on crates.io yet) — validate at the first publish + matching release.
|
|
[package.metadata.binstall]
|
|
pkg-url = "{ repo }/releases/download/v{ version }/{ name }-v{ version }-{ target }{ archive-suffix }"
|
|
pkg-fmt = "bin"
|
|
bin-dir = "{ bin }{ binary-ext }"
|
|
|
|
[package.metadata.binstall.overrides.x86_64-unknown-linux-gnu]
|
|
pkg-url = "{ repo }/releases/download/v{ version }/{ name }-v{ version }-x86_64-unknown-linux-musl"
|
|
|
|
[package.metadata.binstall.overrides.aarch64-unknown-linux-gnu]
|
|
pkg-url = "{ repo }/releases/download/v{ version }/{ name }-v{ version }-aarch64-unknown-linux-musl"
|
|
|
|
[package.metadata.binstall.overrides.x86_64-pc-windows-msvc]
|
|
pkg-url = "{ repo }/releases/download/v{ version }/{ name }-v{ version }-x86_64-pc-windows-gnu.exe"
|
|
|
|
[package.metadata.binstall.overrides.aarch64-pc-windows-msvc]
|
|
pkg-url = "{ repo }/releases/download/v{ version }/{ name }-v{ version }-aarch64-pc-windows-gnullvm.exe"
|