Config parsing cleanup
This commit is contained in:
1 parent
cf14fcd5f8
commit
6e8b50bc7f
1 file changed
+22
-37
+22
-37
@@ -179,8 +179,8 @@ impl Config {
|
|||||||
uci_key: &str,
|
uci_key: &str,
|
||||||
default: Option<T>,
|
default: Option<T>,
|
||||||
) -> Result<T, Box<dyn Error>> {
|
) -> Result<T, Box<dyn Error>> {
|
||||||
return match Self::get_value(env_key, uci_key, None) {
|
return match Self::get_value(env_key, uci_key) {
|
||||||
Ok(val) => match val.parse::<T>() {
|
Some(val) => match val.parse::<T>() {
|
||||||
Ok(parsed_val) => Ok(parsed_val),
|
Ok(parsed_val) => Ok(parsed_val),
|
||||||
// Ran into an compilation error while trying to return the
|
// Ran into an compilation error while trying to return the
|
||||||
// error as-is, so using my own error type to indicate something went wrong while parsing
|
// error as-is, so using my own error type to indicate something went wrong while parsing
|
||||||
@@ -188,60 +188,45 @@ impl Config {
|
|||||||
config_key: env_key.to_string(),
|
config_key: env_key.to_string(),
|
||||||
})),
|
})),
|
||||||
},
|
},
|
||||||
Err(e) => {
|
None => {
|
||||||
return match default {
|
return match default {
|
||||||
Some(val) => Ok(val),
|
Some(val) => Ok(val),
|
||||||
None => Err(e),
|
None => Err(Box::new(MissingConfigError {
|
||||||
|
config_key: env_key.to_string(),
|
||||||
|
})),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
fn get_value(
|
fn get_value(env_key: &str, uci_key: &str) -> Option<String> {
|
||||||
env_key: &str,
|
if let Ok(val) = env::var(env_key) {
|
||||||
uci_key: &str,
|
return Some(val);
|
||||||
default: Option<String>,
|
|
||||||
) -> Result<String, Box<dyn Error>> {
|
|
||||||
let mut err: Option<Box<dyn Error>>;
|
|
||||||
|
|
||||||
match env::var(env_key) {
|
|
||||||
Ok(val) => return Ok(val),
|
|
||||||
Err(e) => err = Some(Box::new(e)),
|
|
||||||
};
|
|
||||||
|
|
||||||
match Self::get_from_uci(uci_key) {
|
|
||||||
Ok(opt) => match opt {
|
|
||||||
Some(val) => return Ok(val),
|
|
||||||
None => {}
|
|
||||||
},
|
|
||||||
Err(e) => err = Some(e),
|
|
||||||
};
|
|
||||||
|
|
||||||
match default {
|
|
||||||
Some(val) => return Ok(val),
|
|
||||||
None => {
|
|
||||||
err = Some(Box::new(MissingConfigError {
|
|
||||||
config_key: env_key.to_string(),
|
|
||||||
}))
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Err(err.unwrap())
|
if let Some(val) = Self::get_from_uci(uci_key) {
|
||||||
|
return Some(val);
|
||||||
|
}
|
||||||
|
|
||||||
|
None
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(feature = "uci")]
|
#[cfg(feature = "uci")]
|
||||||
fn get_from_uci(key: &str) -> Result<Option<String>, Box<dyn Error>> {
|
fn get_from_uci(key: &str) -> Option<String> {
|
||||||
let mut uci: Uci = Uci::new()?;
|
let mut uci: Uci = Uci::new()?;
|
||||||
|
|
||||||
return match uci.get(key) {
|
return match uci.get(key) {
|
||||||
Ok(val) => Ok(Some(val)),
|
Ok(val) => Some(val),
|
||||||
Err(e) => Err(Box::new(e)),
|
Err(e) => {
|
||||||
|
warn!("Problem getting config from UCI: {}", e);
|
||||||
|
None
|
||||||
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(not(feature = "uci"))]
|
#[cfg(not(feature = "uci"))]
|
||||||
fn get_from_uci(_: &str) -> Result<Option<String>, Box<dyn Error>> {
|
fn get_from_uci(_: &str) -> Option<String> {
|
||||||
Ok(None)
|
None
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn load_reflectors(&self) -> Result<Vec<IpAddr>, Box<dyn Error>> {
|
pub fn load_reflectors(&self) -> Result<Vec<IpAddr>, Box<dyn Error>> {
|
||||||
|
|||||||
Reference in new issue
Block a user