summaryrefslogtreecommitdiff
path: root/dichroism/src/config.rs
blob: c1c42f01185f2af598ad57ddfd91084bbe328631 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
use crate::constants::DEFAULT_CONFIG;
use crate::result::Result;
use serde::Deserialize;
use std::env::var;
use std::fs::File;
use std::io::prelude::*;
use std::net::SocketAddr;
use toml::from_str;

#[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)?)
    }
}