use config::{Config, Environment, File};
use serde::Deserialize;
#[derive(Debug, Deserialize)]
pub struct Settings {
pub url: String,
pub port: u16,
pub password: String,
}
impl Settings {
pub fn new() -> Result<Self, config::ConfigError> {
let mut s = Config::default();
s.set_default("url", String::from("0.0.0.0"))?;
s.set_default("port", 25575)?;
s.set_default("password", String::from("test"))?;
if let Some(user_dir) = directories::UserDirs::new() {
s.merge(
File::from(user_dir.home_dir().join(".config/managecraft.toml")).required(false),
)?;
}
s.merge(Environment::with_prefix("managecraft"))?;
s.try_into()
}
}