75 lines
2.2 KiB
TOML
75 lines
2.2 KiB
TOML
[workspace]
|
|
resolver = "3"
|
|
members = [
|
|
"crates/news-core",
|
|
"crates/news-ingest",
|
|
"crates/news-store",
|
|
"crates/news-server",
|
|
"crates/news-web",
|
|
"crates/news-cli",
|
|
]
|
|
|
|
[workspace.package]
|
|
version = "0.2.0"
|
|
edition = "2024"
|
|
license = "MIT"
|
|
|
|
[workspace.lints.rust]
|
|
dead_code = "deny"
|
|
unused_must_use = "deny"
|
|
unsafe_code = "forbid"
|
|
|
|
[workspace.lints.clippy]
|
|
unwrap_used = "deny"
|
|
expect_used = "deny"
|
|
|
|
[workspace.dependencies]
|
|
# Internal
|
|
news-core = { path = "crates/news-core" }
|
|
news-store = { path = "crates/news-store" }
|
|
news-ingest = { path = "crates/news-ingest" }
|
|
news-server = { path = "crates/news-server" }
|
|
|
|
# Errors + serde -- everything else lands with the todo that needs it.
|
|
serde = { version = "1", features = ["derive"] }
|
|
thiserror = "2"
|
|
|
|
# Domain-model primitives (todo 2): ids and timestamps.
|
|
uuid = { version = "1", features = ["v4", "v5", "serde"] }
|
|
chrono = { version = "0.4", default-features = false, features = ["serde", "clock", "std"] }
|
|
chrono-tz = "0.10"
|
|
|
|
# Test-only: JSON round-trip assertions + readable diffs.
|
|
serde_json = "1"
|
|
pretty_assertions = "1"
|
|
|
|
# Persistence (todo 5): SQLite via sqlx, async runtime via tokio.
|
|
# Pinned to the 0.8 line (not runway's 0.9) because 0.9 requires rustc
|
|
# 1.94.0 and this workspace's rust-toolchain.toml is pinned to 1.89.0.
|
|
sqlx = { version = "0.8", features = ["runtime-tokio", "sqlite", "chrono", "uuid", "migrate"] }
|
|
tokio = { version = "1", features = ["rt-multi-thread", "macros"] }
|
|
|
|
# Feed polling (todo 7): HTTP client + XML parsing, mirroring runway's
|
|
# exact feature sets.
|
|
reqwest = { version = "0.12", default-features = false, features = ["json", "rustls-tls"] }
|
|
url = "2"
|
|
quick-xml = "0.42"
|
|
|
|
# Config hot-reload (todo 14): TOML parsing + tracing.
|
|
toml = "0.8"
|
|
tracing = "0.1"
|
|
clap = { version = "4", features = ["derive"] }
|
|
tracing-subscriber = "0.3"
|
|
|
|
# Test-only: capture tracing logs in tests + temp files for config fixtures.
|
|
tracing-test = "0.2"
|
|
tempfile = "3"
|
|
|
|
# HTTP API (todo 13): axum router + tower oneshot test helper.
|
|
axum = "0.8"
|
|
tower = { version = "0.4", features = ["util"] }
|
|
|
|
# Metrics (todo 18): Prometheus text exposition for /metrics.
|
|
# 0.14 drops the protobuf dependency (RUSTSEC-2024-0437).
|
|
prometheus = "0.14"
|