use config_get::ConfigGet;
use crate::error::Result;
#[derive(Debug, Clone)]
pub struct Settings {
pub default_iface: Option<String>,
pub no_color: bool,
pub no_emoji: bool,
pub connect_timeout: u64,
}
impl Default for Settings {
fn default() -> Self {
Self {
default_iface: None,
no_color: false,
no_emoji: false,
connect_timeout: 15,
}
}
}
pub fn load() -> Result<Settings> {
let mut settings = Settings::default();
let cfg = match ConfigGet::builder("iwconf").config_dir("iwconf").build() {
Ok(cfg) => cfg,
Err(config_get::ConfigError::NotFound(_)) => return Ok(settings),
Err(e) => return Err(e.into()),
};
let iface = cfg.get_in_or("iwconf", "default_iface", "");
if !iface.is_empty() {
settings.default_iface = Some(iface.to_string());
}
settings.no_color = cfg
.get_in_or("iwconf", "no_color", "false")
.eq_ignore_ascii_case("true");
settings.no_emoji = cfg
.get_in_or("iwconf", "no_emoji", "false")
.eq_ignore_ascii_case("true");
if let Ok(timeout) = cfg.parse_in::<u64>("iwconf", "connect_timeout") {
settings.connect_timeout = timeout;
}
Ok(settings)
}