From 1d707e91613d036016c82c7f84c862b4d67470dd Mon Sep 17 00:00:00 2001 From: Ethan Girouard Date: Tue, 23 Jun 2026 21:16:32 -0400 Subject: [PATCH] Create Config and config_load --- src/server/config.rs | 22 ++++++++++++++++++++++ src/server/mod.rs | 1 + 2 files changed, 23 insertions(+) create mode 100644 src/server/config.rs diff --git a/src/server/config.rs b/src/server/config.rs new file mode 100644 index 0000000..955b5de --- /dev/null +++ b/src/server/config.rs @@ -0,0 +1,22 @@ +use serde::Deserialize; + +#[derive(Debug, Clone, Deserialize)] +#[derive(Debug, Clone, Deserialize)] +/// Top-level application configuration +pub struct Config {} + +/// Parse configuration from the expected files and environment variables +pub fn load_config() -> Result { + use config::{Environment, File}; + + let pkg_name = env!("CARGO_PKG_NAME"); + + config::Config::builder() + .set_default("server.port", 8080)? + .add_source(File::with_name(&format!("/etc/{pkg_name}/config")).required(false)) + .add_source(File::with_name(&format!("/etc/{pkg_name}")).required(false)) + .add_source(File::with_name("config").required(false)) + .add_source(Environment::with_prefix(pkg_name).separator("_")) + .build()? + .try_deserialize() +} diff --git a/src/server/mod.rs b/src/server/mod.rs index 244576d..4693ba2 100644 --- a/src/server/mod.rs +++ b/src/server/mod.rs @@ -1,3 +1,4 @@ pub mod main; +pub mod config; pub use main::main;