[package] name = "dev-updater" version = "0.1.0" edition = "2024" [[bin]] name = "dev-updater" path = "src/main.rs" [dependencies] # The private link between a phone and a machine you run: the WireGuard # binding, the CA the app pins, QR enrollment, owner-only file creation and # the RON house rules. Shared with ai-app as a submodule rather than a # published crate, so the two cannot end up on versions of it that disagree # -- a pull that moves one moves the other. wg-app-link = { path = "../vendor/wg-app-link/server" } axum = { version = "0.8", features = ["json"] } axum-server = { version = "0.8", features = ["tls-rustls"] } tokio = { version = "1", features = ["rt-multi-thread", "macros", "net", "fs", "io-util"] } tokio-util = { version = "0.7", features = ["io"] } tracing = "0.1" tracing-subscriber = { version = "0.3", features = ["env-filter"] } serde = { version = "1", features = ["derive"] } clap = { version = "4", features = ["derive"] } anyhow = "1" thiserror = "2" zip = "8" serde_json = "1" tempfile = "3" # The format of both this server's own config and the file a project carries # to describe itself -- both read and edited by hand, where comments earn # their keep, and both describing things that are genuinely sums (a # component is an APK or a server, not a tagged bag of every field). TOML # can express the second only as a tag plus flat sibling keys, which nothing # checks until run time. serde_json is still here for the HTTP surface. ron = "0.12.2" [dev-dependencies] # ServiceExt::oneshot, to drive the auth middleware without a socket. tower = { version = "0.5", features = ["util"] } # Setting an explicit mtime is the only way to test "newest build wins" # deterministically -- files written in the same instant tie. filetime = "0.2"