collin/anvil
1008e108c5ea985d8e0ccb25e28a6c12b449b4c0 / Cargo.toml
| 1 | [workspace] |
| 2 | resolver = "2" |
| 3 | members = [ |
| 4 | "crates/*", |
| 5 | "vendor/gitserver-core", |
| 6 | ] |
| 7 | |
| 8 | [workspace.package] |
| 9 | version = "0.0.0" |
| 10 | edition = "2024" |
| 11 | license = "MIT OR Apache-2.0" |
| 12 | repository = "https://github.com/richardscollin/anvil" |
| 13 | rust-version = "1.95" |
| 14 | |
| 15 | [workspace.dependencies] |
| 16 | # Internal crates |
| 17 | anvil-core = { path = "crates/anvil-core" } |
| 18 | anvil-ci = { path = "crates/anvil-ci" } |
| 19 | anvil-git = { path = "crates/anvil-git" } |
| 20 | anvil-web = { path = "crates/anvil-web" } |
| 21 | anvil-ssh = { path = "crates/anvil-ssh" } |
| 22 | |
| 23 | anyhow = "1" |
| 24 | argon2 = { version = "0.5", features = ["std"] } |
| 25 | async-trait = "0.1" |
| 26 | axum = "0.8" |
| 27 | axum-extra = { version = "0.10", features = ["cookie"] } |
| 28 | base64 = "0.22" |
| 29 | bollard = "0.18" |
| 30 | clap = { version = "4", features = ["derive"] } |
| 31 | futures-util = "0.3" |
| 32 | hmac = "0.12" |
| 33 | lru = "0.12" |
| 34 | gitserver-core = { path = "vendor/gitserver-core" } |
| 35 | gix = { version = "0.84", default-features = false, features = ["sha1", "max-performance-safe", "blob-diff", "revision"] } |
| 36 | gix-pack = { version = "0.71", features = ["sha1"] } |
| 37 | maud = { version = "0.27", features = ["axum"] } |
| 38 | pulldown-cmark = { version = "0.13", default-features = false, features = ["html"] } |
| 39 | flate2 = "1" |
| 40 | rand = "0.10" |
| 41 | # HTTP client for the CD deploy webhook. No TLS feature on purpose: the deploy |
| 42 | # receiver is host-local plaintext HTTP, and enabling rustls would drag in |
| 43 | # aws-lc-rs and break the musl cross-compile (see the russh note below). |
| 44 | # TLS via rustls with the *ring* provider only (`-no-provider` + an explicit |
| 45 | # rustls/ring dep): aws-lc-rs needs cmake and breaks the zig musl |
| 46 | # cross-compile, ring does not. anvil-git installs the provider at use time. |
| 47 | # Used for the CD deploy webhook (anvil-ci) and HTTPS push mirroring |
| 48 | # (anvil-git). |
| 49 | reqwest = { version = "0.12", default-features = false, features = ["json", "rustls-tls-webpki-roots-no-provider"] } |
| 50 | rustls = { version = "0.23", default-features = false, features = ["ring", "logging", "std", "tls12"] } |
| 51 | # Used directly only for idempotent schema shims on existing databases; the |
| 52 | # version tracks what toasty-driver-sqlite already pulls in. |
| 53 | rusqlite = "0.39" |
| 54 | serde = { version = "1", features = ["derive"] } |
| 55 | serde_json = "1" |
| 56 | serde_yaml = "0.9" |
| 57 | sha2 = "0.10" |
| 58 | similar = "2" |
| 59 | # `default-onig` (C Oniguruma regex engine) over the pure-Rust `default-fancy`: |
| 60 | # several times faster on large files, and zig's cc cross-compiles the C just |
| 61 | # fine for the static musl build (verified via deploy/build.sh's toolchain). |
| 62 | syntect = { version = "5", default-features = false, features = ["default-onig"] } |
| 63 | tar = "0.4" |
| 64 | thiserror = "2" |
| 65 | time = { version = "0.3", features = ["serde", "formatting"] } |
| 66 | toasty = { version = "0.7", features = ["sqlite"] } |
| 67 | tokio = { version = "1", features = ["full"] } |
| 68 | tokio-util = { version = "0.7", features = ["io"] } |
| 69 | toml = "0.8" |
| 70 | tower = "0.5" |
| 71 | tower-http = { version = "0.6", features = ["trace", "fs"] } |
| 72 | tracing = "0.1" |
| 73 | tracing-subscriber = { version = "0.3", features = ["env-filter"] } |
| 74 | |
| 75 | # ssh — use the `ring` crypto backend instead of the default `aws-lc-rs`: |
| 76 | # ring is far cheaper to compile (no cmake/perl) and cross-compiles cleanly |
| 77 | # (zigbuild/musl), which matters for building images for the low-RAM VPS. |
| 78 | russh = { version = "0.61", default-features = false, features = ["flate2", "ring", "rsa"] } |
| 79 | # ssh-key parsing/fingerprinting, shared by anvil-core (storage) and anvil-ssh |
| 80 | # (auth). Pinned to match russh's transitive ssh-key so fingerprints agree. |
| 81 | ssh-key = "0.7.0-rc.10" |