feuille/src/config.rs

33 lines
874 B
Rust

use std::env;
use std::path::PathBuf;
use rocket::figment::{
providers::{Env, Format, Serialized, Toml},
Figment, Profile,
};
use serde::{Deserialize, Serialize};
use uuid::Uuid;
#[derive(Debug, Deserialize, Serialize)]
pub struct Config {
pub data_dir: PathBuf,
}
impl Default for Config {
fn default() -> Self {
let tmp_data_folder = PathBuf::from(format!("feuille-{}", Uuid::new_v4().to_string()));
let data_dir = env::temp_dir().join(tmp_data_folder);
Self { data_dir }
}
}
impl Config {
pub fn figment() -> Figment {
Figment::from(rocket::Config::default())
.merge(Serialized::defaults(Config::default()))
.merge(Toml::file("feuille.toml").nested())
.merge(Env::prefixed("FEUILLE_").global())
.select(Profile::from_env_or("FEUILLE_PROFILE", "default"))
}
}