blob: 2031ecc011c86391fd72753a35236c79eb096036 (
plain) (
tree)
|
|
use crate::constants::DEFAULT_CONFIG;
use crate::result::Result;
use once_cell::sync::Lazy;
use serde::Deserialize;
use std::env::var;
use std::fs::File;
use std::io::prelude::*;
use std::net::SocketAddr;
use toml::from_str;
pub static CONFIG_INSTANCE: Lazy<Config> = Lazy::new(|| {
Config::from_toml().unwrap_or_else(|e| {
eprintln!("Error parsing config: {}", e.to_string());
std::process::exit(1);
})
});
#[derive(Debug, Clone, Deserialize)]
pub struct Config {
pub db_url: String,
pub img_root: String,
pub bind_addr: SocketAddr,
}
impl Config {
pub fn from_toml() -> Result<Self> {
let path = var("DICHROISM_CONFIG").unwrap_or_else(|_| String::from(DEFAULT_CONFIG));
let mut config = String::new();
File::open(path)?.read_to_string(&mut config)?;
Ok(from_str(&config)?)
}
}
|