mirror of
https://gitlab.com/comunic/comunicapiv3
synced 2024-11-22 13:29:21 +00:00
Parse environment variables in all banner configuration fields
This commit is contained in:
parent
bbe8252f9d
commit
1d21ba0ecc
@ -89,6 +89,14 @@ pub struct Config {
|
|||||||
static mut CONF: Option<Config> = None;
|
static mut CONF: Option<Config> = None;
|
||||||
|
|
||||||
impl Config {
|
impl Config {
|
||||||
|
fn parse_string_val(val: String) -> String {
|
||||||
|
if val.starts_with("$") {
|
||||||
|
std::env::var(&val[1..]).unwrap()
|
||||||
|
} else {
|
||||||
|
val
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fn yaml_str(parsed: &Yaml, name: &str) -> String {
|
fn yaml_str(parsed: &Yaml, name: &str) -> String {
|
||||||
let val = match &parsed[name] {
|
let val = match &parsed[name] {
|
||||||
Yaml::Real(r) | Yaml::String(r) => r.to_string(),
|
Yaml::Real(r) | Yaml::String(r) => r.to_string(),
|
||||||
@ -104,11 +112,7 @@ impl Config {
|
|||||||
}.to_string();
|
}.to_string();
|
||||||
|
|
||||||
// Check if we have to get an environment variable
|
// Check if we have to get an environment variable
|
||||||
if val.starts_with("$") {
|
Self::parse_string_val(val)
|
||||||
std::env::var(&val[1..]).unwrap()
|
|
||||||
} else {
|
|
||||||
val
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn yaml_u64(parsed: &Yaml, name: &str) -> u64 {
|
fn yaml_u64(parsed: &Yaml, name: &str) -> u64 {
|
||||||
@ -184,9 +188,14 @@ impl Config {
|
|||||||
v => panic!("Invalid banner nature: {} !", v)
|
v => panic!("Invalid banner nature: {} !", v)
|
||||||
},
|
},
|
||||||
message: parsed_banner["message"].as_hash().unwrap().iter()
|
message: parsed_banner["message"].as_hash().unwrap().iter()
|
||||||
.map(|(k, v)| (k.as_str().unwrap().to_string(), v.as_str().unwrap().to_string()))
|
.map(|(k, v)| (
|
||||||
|
k.as_str().unwrap().to_string(),
|
||||||
|
Self::parse_string_val(v.as_str().unwrap().to_string()))
|
||||||
|
)
|
||||||
.collect(),
|
.collect(),
|
||||||
link: parsed_banner["link"].as_str().map(|s| s.to_string()),
|
link: parsed_banner["link"].as_str()
|
||||||
|
.map(str::to_string)
|
||||||
|
.map(Self::parse_string_val),
|
||||||
})
|
})
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user