1pub mod fs;
2
3pub type UserEnvVars = std::collections::BTreeMap<String, String>;
4pub type UsersEnvVars = std::collections::BTreeMap<String, UserEnvVars>;
5
6pub fn interpolate_env_vars(pth : &str, env_vars : &UserEnvVars, ret : &mut String) -> Option<()>{
7 if pth.starts_with('%') {
8 let pos = pth[1..].as_bytes().iter().position(|&v| v == b'%')?;
9 let env_var = &pth[1..pos + 1];
10 let rest = if pos + 2 > pth.len() { "" } else {&pth[pos + 2..]};
11 let to_replace_with = env_vars.get(env_var)?;
12 interpolate_env_vars(&to_replace_with, env_vars, ret)?;
13 ret.push_str(rest);
14 }else {
15 ret.push_str(pth);
16 }
17 Some(())
18}