forensic_rs/core/
mod.rs

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}