char/avril

(wip) why'd you have to go and make things so complicaaaaated?

git clone https://git.t4t.associates/char/avril

Charlotte Somextract avril-task crate + add avril:task module7f4058a

main
771 B27 linesraw
1use std::io;
2use std::path::PathBuf;
3
4use avril_host::environment::Environment;
5
6#[derive(Debug, thiserror::Error)]
7pub enum Error {
8    #[error("Cannot load env file {}: {source}", .path.display())]
9    Load {
10        path: PathBuf,
11        #[source]
12        source: io::Error,
13    },
14    #[error(transparent)]
15    Env(#[from] io::Error),
16}
17
18pub fn load_values(paths: &[PathBuf]) -> Result<Vec<(String, String)>, Error> {
19    avril_task::load_env_values(paths).map_err(|error| match error {
20        avril_task::EnvError::Load { path, source } => Error::Load { path, source },
21    })
22}
23
24pub fn load(paths: &[PathBuf]) -> Result<Environment, Error> {
25    let defaults = Environment::new(load_values(paths)?)?;
26    Ok(Environment::from_process().with_defaults(defaults))
27}