use std::io; use std::path::PathBuf; use avril_host::environment::Environment; #[derive(Debug, thiserror::Error)] pub enum Error { #[error("Cannot load env file {}: {source}", .path.display())] Load { path: PathBuf, #[source] source: io::Error, }, #[error(transparent)] Env(#[from] io::Error), } pub fn load_values(paths: &[PathBuf]) -> Result, Error> { avril_task::load_env_values(paths).map_err(|error| match error { avril_task::EnvError::Load { path, source } => Error::Load { path, source }, }) } pub fn load(paths: &[PathBuf]) -> Result { let defaults = Environment::new(load_values(paths)?)?; Ok(Environment::from_process().with_defaults(defaults)) }