pixy_server/
config.rs

1use config::{Config, ConfigError, Environment};
2use serde::{Deserialize, Serialize};
3
4#[derive(Serialize, Deserialize, Debug)]
5pub struct ServerConfiguration {
6    pub port: u16,
7    pub log_level: String,
8    pub config_file: String,
9    pub enable_echo: bool,
10}
11
12impl ServerConfiguration {
13    pub fn build() -> Result<Self, ConfigError> {
14        Config::builder()
15            .add_source(Environment::with_prefix("PIXY"))
16            .set_default("port", 9147)?
17            .set_default("log_level", "info")?
18            .set_default("config_file", "/pixy.yaml")?
19            .set_default("enable_echo", false)?
20            .build()?
21            .try_deserialize()
22    }
23}