auto_commit_rs/
interpolation.rs1use crate::config::AppConfig;
2use regex_lite::Regex;
3
4pub fn interpolate(template: &str, cfg: &AppConfig) -> String {
7 let env_pairs = [
9 ("ACR_PROVIDER", &cfg.provider),
10 ("ACR_MODEL", &cfg.model),
11 ("ACR_API_KEY", &cfg.api_key),
12 ("ACR_LOCALE", &cfg.locale),
13 ];
14 for (key, val) in &env_pairs {
15 std::env::set_var(key, val);
16 }
17
18 let re = Regex::new(r"\$([A-Za-z_][A-Za-z0-9_]*)").unwrap();
19 let result = re.replace_all(template, |caps: ®ex_lite::Captures| {
20 let var_name = &caps[1];
21 std::env::var(var_name).unwrap_or_default()
22 });
23
24 result.into_owned()
25}