exum 0.1.10

A lightweight Axum syntax sugar library
Documentation
use toml::Value;

pub fn inject_env_vars(val: &mut Value) {
    match val {
        Value::String(s) => {
            if s.starts_with("${") && s.ends_with("}") {
                let key = &s[2..s.len() - 1];
                if let Ok(env_val) = std::env::var(key) {
                    *s = env_val;
                }
            }
        }
        Value::Table(map) => {
            for (_, v) in map.iter_mut() {
                inject_env_vars(v);
            }
        }
        Value::Array(arr) => {
            for v in arr.iter_mut() {
                inject_env_vars(v);
            }
        }
        _ => {}
    }
}

pub fn detect_env() -> String {
    if let Ok(env) = std::env::var("EXUM_ENV") {
        return env;
    }

    if cfg!(debug_assertions) {
        "dev".to_string()
    } else {
        "prod".to_string()
    }
}