From 2b0bc140cf92192596d0c878827f529de59ee592 Mon Sep 17 00:00:00 2001 From: Charles Hall Date: Thu, 6 Jun 2024 22:07:32 -0700 Subject: [PATCH] drop figment Just deserialize directly via the `toml` crate. --- Cargo.lock | 92 ++++------------------------------------------------ Cargo.toml | 2 +- src/error.rs | 7 ++-- src/main.rs | 14 ++++---- 4 files changed, 18 insertions(+), 97 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 3ab74856..ba8c564c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -113,15 +113,6 @@ dependencies = [ "syn", ] -[[package]] -name = "atomic" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d818003e740b63afc82337e3160717f4f63078720a810b7b903e70a5d1d2994" -dependencies = [ - "bytemuck", -] - [[package]] name = "atomic-waker" version = "1.1.2" @@ -686,20 +677,6 @@ version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" -[[package]] -name = "figment" -version = "0.10.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8cb01cd46b0cf372153850f4c6c272d9cbea2da513e07538405148f95bd789f3" -dependencies = [ - "atomic", - "pear", - "serde", - "toml", - "uncased", - "version_check", -] - [[package]] name = "flate2" version = "1.0.30" @@ -852,7 +829,6 @@ dependencies = [ "base64 0.22.1", "bytes", "clap", - "figment", "futures-util", "hmac", "html-escape", @@ -892,6 +868,7 @@ dependencies = [ "thread_local", "tikv-jemallocator", "tokio", + "toml", "tower", "tower-http", "tracing", @@ -1253,12 +1230,6 @@ dependencies = [ "serde", ] -[[package]] -name = "inlinable_string" -version = "0.1.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8fae54786f62fb2918dcfae3d568594e50eb9b5c25bf04371af6fe7516452fb" - [[package]] name = "ipconfig" version = "0.3.2" @@ -1754,29 +1725,6 @@ dependencies = [ "subtle", ] -[[package]] -name = "pear" -version = "0.2.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdeeaa00ce488657faba8ebf44ab9361f9365a97bd39ffb8a60663f57ff4b467" -dependencies = [ - "inlinable_string", - "pear_codegen", - "yansi", -] - -[[package]] -name = "pear_codegen" -version = "0.2.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bab5b985dc082b345f812b7df84e1bef27e7207b39e448439ba8bd69c93f147" -dependencies = [ - "proc-macro2", - "proc-macro2-diagnostics", - "quote", - "syn", -] - [[package]] name = "pem" version = "3.0.4" @@ -1932,19 +1880,6 @@ dependencies = [ "unicode-ident", ] -[[package]] -name = "proc-macro2-diagnostics" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8" -dependencies = [ - "proc-macro2", - "quote", - "syn", - "version_check", - "yansi", -] - [[package]] name = "prometheus" version = "0.13.4" @@ -3045,14 +2980,14 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.13" +version = "0.8.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4e43f8cc456c9704c851ae29c67e17ef65d2c30017c17a9765b89c382dc8bba" +checksum = "6f49eb2ab21d2f26bd6db7bf383edc527a7ebaee412d17af4d40fdccd442f335" dependencies = [ "serde", "serde_spanned", "toml_datetime", - "toml_edit 0.22.13", + "toml_edit 0.22.14", ] [[package]] @@ -3077,9 +3012,9 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.22.13" +version = "0.22.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c127785850e8c20836d49732ae6abfa47616e60bf9d9f57c43c250361a9db96c" +checksum = "f21c7aaf97f1bd9ca9d4f9e73b0a6c74bd5afef56f2bc931943a6e1c37e04e38" dependencies = [ "indexmap 2.2.6", "serde", @@ -3329,15 +3264,6 @@ version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e36a83ea2b3c704935a01b4642946aadd445cea40b10935e3f8bd8052b8193d6" -[[package]] -name = "uncased" -version = "0.9.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1b88fcfe09e89d3866a5c11019378088af2d24c3fbd4f0543f96b479ec90697" -dependencies = [ - "version_check", -] - [[package]] name = "unicode-bidi" version = "0.3.15" @@ -3734,12 +3660,6 @@ dependencies = [ "windows-sys 0.48.0", ] -[[package]] -name = "yansi" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049" - [[package]] name = "yap" version = "0.12.0" diff --git a/Cargo.toml b/Cargo.toml index 9fb3466a..ed55a338 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -95,7 +95,6 @@ axum-server = { version = "0.6.0", features = ["tls-rustls"] } base64 = "0.22.1" bytes = "1.6.0" clap = { version = "4.5.4", default-features = false, features = ["std", "derive", "help", "usage", "error-context", "string"] } -figment = { version = "0.10.19", features = ["env", "toml"] } futures-util = { version = "0.3.30", default-features = false } hmac = "0.12.1" html-escape = "0.2.13" @@ -134,6 +133,7 @@ thiserror = "1.0.61" thread_local = "1.1.8" tikv-jemallocator = { version = "0.5.4", features = ["unprefixed_malloc_on_supported_platforms"], optional = true } tokio = { version = "1.37.0", features = ["fs", "macros", "signal", "sync"] } +toml = "0.8.14" tower = { version = "0.4.13", features = ["util"] } tower-http = { version = "0.5.2", features = ["add-extension", "cors", "sensitive-headers", "trace", "util"] } tracing = { version = "0.1.40", features = [] } diff --git a/src/error.rs b/src/error.rs index 29dca26a..f6286c0e 100644 --- a/src/error.rs +++ b/src/error.rs @@ -38,8 +38,11 @@ impl fmt::Display for DisplayWithSources<'_> { #[allow(missing_docs)] #[derive(Error, Debug)] pub(crate) enum Main { - #[error("invalid configuration")] - ConfigInvalid(#[from] figment::Error), + #[error("failed to read configuration file")] + ConfigRead(#[source] std::io::Error), + + #[error("failed to parse configuration")] + ConfigParse(#[from] toml::de::Error), #[error("failed to initialize observability")] Observability(#[from] Observability), diff --git a/src/main.rs b/src/main.rs index 4c1c9427..e71430c4 100644 --- a/src/main.rs +++ b/src/main.rs @@ -16,10 +16,6 @@ use axum::{ use axum_server::{ bind, bind_rustls, tls_rustls::RustlsConfig, Handle as ServerHandle, }; -use figment::{ - providers::{Format, Toml}, - Figment, -}; use http::{ header::{self, HeaderName}, Method, StatusCode, Uri, @@ -110,10 +106,12 @@ async fn try_main() -> Result<(), error::Main> { let args = args::parse(); - // Initialize config - let raw_config = Figment::new().merge(Toml::file(&args.config)); - - let config = raw_config.extract::()?; + let config = toml::from_str( + &tokio::fs::read_to_string(&args.config) + .await + .map_err(Error::ConfigRead)?, + ) + .map_err(Error::ConfigParse)?; let _guard = observability::init(&config);