use cirious_codex::codex_config::{ConfigBuilder, Deserialize};
use cirious_codex::codex_logger;
use cirious_codex_config::format::ConfigFormat;
use cirious_codex_result::CodexError;
use std::env;
#[derive(Debug, Deserialize)]
struct AppSettings {
app_name: String,
port: u16,
debug_mode: bool,
}
fn main() -> Result<(), CodexError> {
codex_logger::info!("Starting configuration loading example...");
let base_json = r#"{
"app_name": "CiriousDemo",
"port": 8080,
"debug_mode": false
}"#;
env::set_var("APP_PORT", "9000");
env::set_var("APP_DEBUG_MODE", "true");
let settings = ConfigBuilder::new()
.add_source(base_json, ConfigFormat::Json)?
.value .add_env_prefix("APP_")
.build::<AppSettings>()?
.value;
codex_logger::info!("Loaded Application Name: {}", settings.app_name);
codex_logger::info!("Server Port: {} (Overridden by ENV variable)", settings.port);
codex_logger::info!("Debug Mode: {} (Overridden by ENV variable)", settings.debug_mode);
Ok(())
}