From: fozzie Date: Sat, 19 Jul 2025 22:10:56 +0000 (-0500) Subject: fix env var handling X-Git-Url: https://git.humopery.space/?a=commitdiff_plain;h=57e51a017e65cf2b437a980bb5523d6fd9061f21;p=waterslager.git fix env var handling --- diff --git a/src/main.rs b/src/main.rs index 87d8f7e..acc9276 100644 --- a/src/main.rs +++ b/src/main.rs @@ -4,7 +4,7 @@ mod verify; use axum::{routing::{get,post}, Router}; use axum::serve; use serde::Deserialize; -use std::{collections::HashMap, env, fs::{read_dir, File}}; +use std::{collections::HashMap, fs::{read_dir, File}}; use std::net::SocketAddr; use tokio::net::TcpListener; @@ -39,21 +39,26 @@ async fn load_certs_from_fs() -> Result> { #[tokio::main] async fn main() -> Result<(),Box> { - // set defaults - unsafe { - env::set_var("BIND_HOST","127.0.0.1"); - env::set_var("BIND_PORT","3000"); - env::set_var("APP_ROOT", "/"); - } - // ... then override from .env, ignoring any error (file may not be there) - let _ = dotenvy::dotenv_override(); + // set config values. real env vars will take precedence over vars in .env + let _ = dotenvy::dotenv(); + let bind_host = match dotenvy::var("BIND_HOST") { + Ok(val) => val, + Err(_) => "127.0.0.1".to_string() + }; + let bind_port = match dotenvy::var("BIND_PORT") { + Ok(val) => val, + Err(_) => "3000".to_string() + }; + let app_root = match dotenvy::var("APP_ROOT") { + Ok(val) => val, + Err(_) => "/".to_string() + }; let certs = load_certs_from_fs().await.unwrap(); - let app_root = env::var("APP_ROOT")?; let app_state = AppState{ certs, - app_root: app_root.clone(), + app_root: app_root.to_string() }; let all_routes = Router::new() @@ -62,8 +67,7 @@ async fn main() -> Result<(),Box> { .with_state(app_state); let addr = SocketAddr::new( - env::var("BIND_HOST")?.parse()?, - env::var("BIND_PORT")?.parse()?); + bind_host.parse()?, bind_port.parse()?); let listener = TcpListener::bind(&addr).await.unwrap(); serve(listener, all_routes.into_make_service()) .await