subduction_cli 0.17.0

CLI server for Subduction sync over WebSocket, HTTP long-poll, and Iroh (QUIC)
[package]
name = "subduction_cli"
version = "0.17.0"
description = "CLI server for Subduction sync over WebSocket, HTTP long-poll, and Iroh (QUIC)"

categories = ["command-line-utilities", "web-programming"]
keywords = ["subduction"]
readme = "./README.md"

authors.workspace = true
edition.workspace = true
license.workspace = true
repository.workspace = true
rust-version.workspace = true

[dependencies]
ahash = { workspace = true }
async-channel = { workspace = true }
async-lock = { workspace = true }
async-tungstenite = { workspace = true }
axum = { workspace = true }
ciborium = { workspace = true }
clap = { workspace = true }
color-eyre = { workspace = true }
console-subscriber = { workspace = true, optional = true }
dupe = "0.9"
ed25519-dalek = { workspace = true }
eyre = { workspace = true }
futures = { workspace = true }
future_form = { workspace = true }
futures-util = { workspace = true }
hex = { workspace = true }
http-body-util = { workspace = true }
hyper = { workspace = true, features = ["http1", "server"] }
hyper-util = { workspace = true, features = ["tokio", "http1", "server-auto"] }
iroh = { workspace = true }
keyhive_core = { workspace = true }
keyhive_crypto = { workspace = true }
metrics = { workspace = true }
metrics-exporter-prometheus = { workspace = true }
metrics-process = { workspace = true, optional = true }
metrics-util = { workspace = true }
nonempty = { workspace = true, features = ["std"] }
rand = { workspace = true }
reqwest = { workspace = true }
sedimentree_core = { workspace = true, features = ["std"] }
sedimentree_fs_storage = { workspace = true }
subduction_core = { workspace = true, features = ["system_time", "metrics"] }
subduction_ephemeral = { workspace = true, features = ["std"] }
subduction_crypto = { workspace = true }
subduction_keyhive = { workspace = true, features = ["runtime"] }
subduction_redb_storage = { workspace = true, features = ["metrics"] }
subduction_http_longpoll = { workspace = true, features = ["metrics", "server", "std"] }
subduction_iroh = { workspace = true }
subduction_websocket = { workspace = true, features = ["metrics"] }
thiserror = { workspace = true }
tokio = { workspace = true, features = ["full", "tracing"] }
tokio-util = { workspace = true }
tracing = { workspace = true, default-features = true }
tracing-loki = { workspace = true, optional = true }
tracing-subscriber = { workspace = true, default-features = true, features = ["env-filter", "json"] }
tungstenite = { workspace = true }
url = { workspace = true, features = ["std"] }

[dev-dependencies]
bolero = { workspace = true }
future_form = { workspace = true }
reqwest = { workspace = true, features = ["native-tls"] }
sedimentree_core = { workspace = true, features = ["std"] }
subduction_core = { workspace = true, features = ["std", "test_utils"] }
testresult = { workspace = true }
subduction_crypto = { workspace = true }
subduction_http_longpoll = { workspace = true, features = ["std", "native-tls"] }
subduction_websocket = { workspace = true, features = ["futures-timer"] }
tempfile = "3"
tokio = { workspace = true, features = ["full"] }

# `nix` is unix-only. The `os-metrics` disk gauge reads `statvfs`; non-unix
# targets (Windows) fall back to publishing just the redb file size.
[target.'cfg(unix)'.dependencies]
nix = { workspace = true, optional = true }

[features]
default = ["native-tls", "os-metrics"]
# Host-level metrics: process memory/CPU/FDs (metrics-process) and disk usage
# (nix statvfs). Optional so the binary can drop those deps; on by default.
os-metrics = ["dep:metrics-process", "dep:nix"]
native-tls = [
  "async-tungstenite/tokio-native-tls",
  "reqwest/native-tls",
  "subduction_http_longpoll/native-tls",
  "subduction_websocket/tokio_client",
  "subduction_websocket/tokio_server",
  "dep:tracing-loki",
]
rustls = [
  "async-tungstenite/tokio-rustls-native-certs",
  "reqwest/rustls",
  "subduction_http_longpoll/rustls-tls",
  "subduction_websocket/tokio_client_rustls",
  "subduction_websocket/tokio_server_rustls",
]
# Compile in `console-subscriber`. Off by default; set `TOKIO_CONSOLE=1` at
# runtime when built with this feature to attach `tokio-console`.
tokio-console = ["dep:console-subscriber"]

[lints]
workspace = true