Can specify environment variables in client configuration
This commit is contained in:
@ -1,3 +1,4 @@
|
||||
use lazy_regex::regex_find;
|
||||
use rand::distributions::Alphanumeric;
|
||||
use rand::Rng;
|
||||
|
||||
@ -9,3 +10,24 @@ pub fn rand_str(len: usize) -> String {
|
||||
.take(len)
|
||||
.collect()
|
||||
}
|
||||
|
||||
/// Parse environment variables
|
||||
pub fn apply_env_vars(val: &str) -> String {
|
||||
let mut val = val.to_string();
|
||||
|
||||
if let Some(varname_with_wrapper) = regex_find!(r#"\$\{[a-zA-Z0-9_-]+\}"#, &val) {
|
||||
let varname = varname_with_wrapper.strip_prefix("${").unwrap().strip_suffix('}').unwrap();
|
||||
let value = match std::env::var(varname) {
|
||||
Ok(v) => v,
|
||||
Err(e) => {
|
||||
log::error!("Failed to find environment variable {}!", varname);
|
||||
eprintln!("Failed to find environment variable! {:?}", e);
|
||||
std::process::exit(2);
|
||||
}
|
||||
};
|
||||
|
||||
val = val.replace(varname_with_wrapper, &value);
|
||||
}
|
||||
|
||||
val
|
||||
}
|
Reference in New Issue
Block a user