1pub mod core;
10pub mod crypto;
11pub mod output;
12pub mod runtime;
13pub mod schema;
14
15use anyhow::Context;
16use std::collections::BTreeMap;
17
18pub fn load_environment(name: &str) -> anyhow::Result<BTreeMap<String, String>> {
21 let path = core::discover(&std::env::current_dir()?)?;
22 let project = core::load(&path)?;
23 let profile = core::environment(&project, name)?;
24 let root = path.parent().unwrap_or(&path);
25 let plaintext = crypto::decrypt_for(&root.join(&profile.file), Some(name))
26 .with_context(|| format!("decrypt environment {name}"))?;
27 Ok(schema::parse_env(&plaintext))
28}