lum_config 0.1.0

lum framework's config library
Documentation
pub mod env_handler;
pub mod error;
pub mod file_handler;
pub mod merger;

pub use env_handler::*;
pub use error::*;
pub use file_handler::*;
use lum_libs::serde::{Deserialize, Serialize};
pub use merger::*;

pub fn load_config<FILE, ENV, STRING>(
    app_name: impl Into<String>,
    config_file_name: Option<impl Into<String>>,
) -> Result<FILE, ConfigParseError>
where
    FILE: Serialize + for<'de> Deserialize<'de> + Merge<ENV>,
    ENV: Serialize + for<'de> Deserialize<'de>,
{
    let app_name: String = app_name.into();
    let config_file_name: Option<String> = config_file_name.map(Into::into);

    let file_handler = FileHandler::new(app_name.clone(), config_file_name);
    let env_handler = EnvHandler::new(app_name);

    let env_config = env_handler.load_config()?;
    let file_config = file_handler.load_config()?;

    let merged_config = merger::merge(&env_config, file_config);

    Ok(merged_config)
}