28 lines
745 B
Rust
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>()
|
|
}
|