[package]
# crates.io crate name; the installed binary stays `ghr-stats` (see [[bin]]).
name = "fso-ghr-stats"
version = "0.1.2"
edition = "2024"
# MSRV: our code needs 1.88 (edition 2024 + stable `let`-chains), but the
# `sysinfo` dependency raises the effective floor to 1.95.
rust-version = "1.95"
description = "Live TUI + collector service (history, jobs, Prometheus) for self-hosted GitHub Actions runner fleets"
authors = ["Aditya Kresna <https://github.com/Ujang360>"]
license = "MIT"
repository = "https://github.com/fluminis-scientiae-oraculum/ghr-stats"
readme = "README.md"
keywords = ["github-actions", "self-hosted", "runner", "tui", "prometheus"]
categories = ["command-line-utilities", "development-tools"]
# Keep internal dev/tooling files out of the published tarball. `.fso-amem/`
# carries an internal server URL; `.cargo/config.toml` pins target-cpu (a footgun
# if a downstream builds from the extracted tarball on an older CPU).
exclude = [".fso-amem/", ".cargo/"]

[[bin]]
name = "ghr-stats"
path = "src/entrypoint.rs"

[dependencies]
anyhow = "1.0.103"
clap = { version = "4.6.1", features = ["derive"] }
crossbeam-channel = "0.5.15"
ctrlc = { version = "3.5.2", features = ["termination"] }
dialoguer = "0.12.0"
mimalloc = "0.1"
nix = { version = "0.31.3", features = ["fs", "feature", "user", "socket"] }
ratatui = "0.30.2"
rusqlite = { version = "0.40.1", features = ["bundled"] }
serde = { version = "1.0.228", features = ["derive"] }
serde_json = "1.0.150"
sysinfo = "0.39.5"
tempfile = "3.27.0"
thiserror = "2.0.18"
tiny_http = "0.12"
toml = "1.1.2"
tracing = "0.1.44"
tracing-subscriber = { version = "0.3.23", features = ["env-filter"] }
tui-input = { version = "0.15.3", default-features = false, features = ["ratatui-crossterm"] }
ureq = { version = "3", features = ["json"] }
uzers = "0.12.2"
walkdir = "2.5.0"

[dev-dependencies]
insta = "1"

# Distribution build. NB: do NOT pin `target-cpu` here — it would break others'
# `cargo install`. The static-musl x86-64-v2 build sets it via RUSTFLAGS.
[profile.release]
lto = "thin"
codegen-units = 1
strip = true
