chrysopoeia/src/settings.rs
2025-03-22 12:34:42 -04:00

28 lines
745 B
Rust

use std::path::PathBuf;
use config::{Config, ConfigError, File};
use lazy_static::lazy_static;
use serde::Deserialize;
lazy_static! {
static ref XDG: xdg::BaseDirectories =
xdg::BaseDirectories::with_prefix("chrysopoeia").unwrap();
}
#[derive(Debug, Default, Deserialize)]
pub struct Settings {
#[serde(default = "default_parser_dir")]
pub parser_dir: PathBuf,
}
fn default_parser_dir() -> PathBuf {
XDG.get_data_file("parsers")
}
pub fn get_settings() -> Result<Settings, ConfigError> {
Config::builder()
.add_source(File::from(XDG.get_config_file("config")).required(false))
.add_source(File::with_name("chrysopoeia").required(false))
.build()?
.try_deserialize::<Settings>()
}