rtb-update 0.7.1

Self-update subsystem composing on rtb-forge to fetch signed release assets and atomically swap the running binary. Part of the phpboyscout Rust toolkit.
Documentation
[package]
name = "rtb-update"
description = "Self-update subsystem composing on rtb-forge to fetch signed release assets and atomically swap the running binary. Part of the phpboyscout Rust toolkit."
version.workspace = true
edition.workspace = true
rust-version.workspace = true
license.workspace = true
authors.workspace = true
repository.workspace = true
readme.workspace = true
homepage.workspace = true
documentation = "https://docs.rs/rtb-update"
categories = ["command-line-interface", "development-tools"]
keywords = ["self-update", "update", "release", "signing", "cli"]

[lints]
workspace = true

[dependencies]
rtb-app = { version = "0.7.0" }
rtb-forge = { version = "0.7.0", default-features = false }
rtb-credentials = { version = "0.6.0" }

# Registry (BUILTIN_COMMANDS entry)
linkme = "0.3.37"

# Async + IO
tokio = { version = "1.53.0", features = ["full"] }
async-trait = "0.1.91"

# CLI dispatch
clap = { version = "4.6.2", features = ["derive", "env", "wrap_help", "string"] }

# Error type
miette = { version = "7.6.0", features = ["fancy"] }
thiserror = "2.0.19"

# Structured logging
tracing = "0.1.44"

# Versioning
semver = { version = "1.0.28", features = ["serde"] }

# Integrity
sha2 = "0.11.0"
ed25519-dalek = "3.0.0"

# Filesystem paths + self-replace
self-replace = "1.5"
directories = "6.0.0"

# Archive extraction — release assets ship as .tar.gz / .zip
tar = "0.4.46"
flate2 = "1.1.9"
zip = { version = "8.6.0", default-features = false, features = ["deflate"] }

# Base64 decode for minisign signature files.
base64 = "0.22.1"

# Serde — for parsing minisign's trust-database-free `.minisig` header
# and for consumers that serialise progress events.
serde = { version = "1.0.229", features = ["derive"] }
# Persisting the update-policy throttle state (last-check timestamp).
toml = "1.1.3"

[dev-dependencies]
tokio = { version = "1.53.0", features = ["macros", "rt-multi-thread"] }
tempfile = "3.27.0"
# Needed by the mock ReleaseAsset / Release fixtures in tests.
# (rtb-update's own code doesn't use these directly — they're
# transitively available via rtb-forge, but its public types expose
# `time::OffsetDateTime` so test files using the API still need it.)
time = { version = "0.3.53", features = ["serde", "formatting", "parsing", "macros"] }