fixed env resolution

This commit is contained in:
euzu
2024-11-15 17:49:48 +01:00
parent c5fa650a59
commit fd0754871f
6 changed files with 29 additions and 54 deletions
+4 -9
View File
@@ -142,13 +142,8 @@ pub fn save_main_config(file_path: &str, backup_dir: &str, config: &ConfigDto) -
static ENV_REGEX: LazyLock<regex::Regex> = LazyLock::new(|| Regex::new(r"\$\{env:(?P<var>[a-zA-Z_][a-zA-Z0-9_]*)}").unwrap());
pub fn resolve_env_var(value: &str) -> String {
if !value.trim().is_empty() {
if let Some(caps) = ENV_REGEX.captures(value) {
if let Some(var) = caps.name("var") {
let var_name = var.as_str();
return env::var(var_name).unwrap_or_else(|_| value.to_string());
}
}
}
value.to_string()
ENV_REGEX.replace_all(value, |caps: &regex::Captures| {
let var_name = &caps["var"];
env::var(var_name).unwrap_or_else(|_| format!("${{env:{var_name}}}"))
}).to_string()
}
+6 -12
View File
@@ -4,7 +4,7 @@ use std::io::Write;
use std::path::{Path, PathBuf};
use log::{debug, error};
use path_absolutize::Absolutize;
use path_clean::PathClean;
const USER_FILE: &str = "user.txt";
const CONFIG_PATH: &str = "config";
@@ -132,17 +132,11 @@ pub fn prepare_persist_path(file_name: &str, date_prefix: &str) -> PathBuf {
pub fn get_file_path(wd: &str, path: Option<PathBuf>) -> Option<PathBuf> {
path.map(|p| if p.is_relative() {
let pb = PathBuf::from(wd);
match pb.join(&p).absolutize() {
Ok(os) => PathBuf::from(os),
Err(e) => {
error!("path is not relative {:?}", e);
p
}
}
} else {
p
})
let pb = PathBuf::from(wd);
pb.join(&p).clean()
} else {
p
})
}
pub fn add_prefix_to_filename(path: &Path, prefix: &str, ext: Option<&str>) -> PathBuf {