33 lines
874 B
Rust
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"))
|
|
}
|
|
}
|