use std::collections::BTreeMap;
use crate::child_env;
pub fn base_environment_names() -> &'static [&'static str] {
child_env::base_names()
}
pub fn child_environment<F>(allowlist: &[String], mut read: F) -> BTreeMap<String, String>
where
F: FnMut(&str) -> Option<String>,
{
let mut environment = child_env::collect_base(&mut read);
for name in allowlist {
if let Some(value) = read(name) {
environment.insert(name.clone(), value);
}
}
environment.insert(super::IN_HOOK_ENV.to_owned(), "1".into());
environment
}
pub fn ambient(name: &str) -> Option<String> {
std::env::var(name).ok()
}
#[cfg(test)]
#[path = "environment_tests.rs"]
mod tests;