rustio-admin-cli 0.27.5

Command-line tools for rustio-admin: project scaffolding, migrations, user management.
[package]
name = "rustio-admin-cli"
# Tracks the workspace minor. Bundled template pins new projects to
# `rustio-admin = "0.27.5"`. CI guards this in `.github/workflows/ci.yml`.
version = "0.27.5"
edition.workspace = true
rust-version.workspace = true
license.workspace = true
repository.workspace = true
homepage.workspace = true
authors.workspace = true
description = "Command-line tools for rustio-admin: project scaffolding, migrations, user management."
readme = "../../README.md"

[[bin]]
name = "rustio-admin"
path = "src/main.rs"

[dependencies]
rustio-admin = { workspace = true }
# Theme engine (DESIGN_THEME). Build-time only — the `rustio-admin theme
# generate` subcommand turns raw brand colors into a static tokens.css.
# Runtime CSS is the generated file; the library does not depend on
# this crate.
rio-theme = { path = "../rio-theme", version = "0.27.5" }

# CLI surface
clap      = { version = "4", features = ["derive"] }
rpassword = "7"
# Spinner + status feedback for long-running onboarding operations
# (PR 1.4 / DESIGN_ONBOARDING.md §9). The library's own TTY / non-TTY
# / NO_COLOR detection short-circuits to a no-op draw target in
# pipes / CI; we layer one additional gate on top so the global
# `--quiet` / `--no-progress` flags work too.
indicatif = "0.17"
# Terminal styling for `rustio-admin startapp` spatial-orientation output
# (paths, commands, URLs visually distinct). `console` is already in
# the transitive tree via `indicatif`; declaring it directly keeps
# the call site reviewable and locks the version. NO_COLOR / TTY
# detection lives inside the crate.
console = "0.15"

# DB + env (DATABASE_URL is read from .env when present)
sqlx      = { version = "0.8", default-features = false, features = ["runtime-tokio", "postgres", "chrono"] }
chrono    = { version = "0.4", default-features = false, features = ["clock", "std"] }
dotenvy   = "0.15"
tokio     = { version = "1", features = ["rt-multi-thread", "macros"] }
env_logger = "0.11"
log       = "0.4"
# R4 emergency-recovery audit metadata. The CLI assembles a
# `serde_json::Value` per command (`cli_operation`, `reason`,
# `os_actor`, `cli_invocation`, plus per-op fields) and hands it
# to the framework's `audit::record`. The crate is already in the
# transitive tree via rustio-admin; declaring it as a direct dep
# keeps the call site reviewable.
serde_json = "1"
# `rustio-admin doctor email` opens a SMTP handshake against the
# configured server (and optionally sends a single test
# message). Matches the `lettre` feature set the
# clinic-appointments example ships with.
lettre = { version = "0.11", default-features = false, features = ["smtp-transport", "tokio1", "tokio1-rustls-tls", "builder", "hostname"] }

# Builder layer (DESIGN_BUILDER.md). These deps power the
# deterministic project compiler: canonical TOML emission, append-
# only event log, SchemaHash computation, and the redactor that
# prevents secrets from landing in `.rustio/history.jsonl`. The
# Builder is build-time only — none of these crates is reachable
# from runtime code in `rustio-admin`.
ulid = "1"
toml_edit = "0.22"
sha2 = "0.10"
unicode-normalization = "0.1"
serde = { version = "1", features = ["derive"] }