envmaster 0.1.0

A Rust library for environment variable management
Documentation
use std::collections::HashMap;
use std::fmt::Debug;
use std::hash::Hash;
use strum::IntoEnumIterator;

// #[derive(Debug, PartialEq, Eq, Hash, strum_macros::EnumIter, strum_macros::AsRefStr)]
// #[allow(non_camel_case_types)]
// pub enum Env {
//     SECRET1,
//     SECRET2,
//     SECRET3,
// }
//
// let env = Arc::new(get_env());
// let secret1 = env.get(&Env::SECRET1).unwrap().clone();

pub fn get_env<E: IntoEnumIterator + Debug + PartialEq + Eq + Hash + AsRef<str>>(
) -> HashMap<E, String> {
    let mut env: HashMap<E, String> = HashMap::new();
    let mut errors: HashMap<E, String> = HashMap::new();
    dotenvy::dotenv().ok();
    for item in E::iter() {
        let val = std::env::var(item.as_ref());
        match val {
            Ok(val) => {
                env.insert(item, val);
            }
            Err(e) => {
                errors.insert(item, e.to_string());
            }
        }
    }
    if !errors.is_empty() {
        eprintln!("Env parse errors: {errors:?}");
    }
    env
}