From: Matthieu Date: Sat, 2 Oct 2021 12:40:48 +0000 (+0400) Subject: fix: unable to set nested variables X-Git-Tag: v0.1~56^2~36 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=4a08838b902d7f7c0c4daec5fe121707d794ec6e;p=matthieu%2Fnova.git fix: unable to set nested variables --- diff --git a/common/rust/src/config.rs b/common/rust/src/config.rs index c158a21..d4437a9 100644 --- a/common/rust/src/config.rs +++ b/common/rust/src/config.rs @@ -1,9 +1,8 @@ use std::env; -use config::{Config, ConfigError, Environment, File}; +use config::{Config, ConfigError, Environment, File, Source}; use log::info; -use serde::{Deserialize}; - +use serde::Deserialize; #[derive(Debug, Deserialize, Clone)] #[serde(bound(deserialize = "T: Deserialize<'de> + std::default::Default + Clone"))] @@ -14,7 +13,10 @@ pub struct Settings { pub nats: crate::nats::NatsConfiguration, } -impl Settings where T: Deserialize<'static> + std::default::Default + Clone { +impl Settings +where + T: Deserialize<'static> + std::default::Default + Clone, +{ pub fn new(service_name: &str) -> Result, ConfigError> { let mut default = Config::default(); // this file my be shared with all the components @@ -25,8 +27,10 @@ impl Settings where T: Deserialize<'static> + std::default::Default + Clon default.merge(File::with_name(&format!("config/{}", mode)).required(false))?; default.merge(File::with_name("config/local").required(false))?; + let env = Environment::with_prefix("NOVA").separator("__"); + println!("{:?}", env.collect()); // we can configure each component using environment variables - default.merge(Environment::with_prefix("NOVA").separator("_"))?; + default.merge(env)?; let mut config: Settings = default.clone().try_into().unwrap(); // try to load the config diff --git a/webhook/config/default.yaml b/webhook/config/default.yaml new file mode 100644 index 0000000..7f88e6f --- /dev/null +++ b/webhook/config/default.yaml @@ -0,0 +1,13 @@ +monitoring: + enabled: true + address: "0.0.0.0" + port: 5000 +nats: + host: "nova-infra-nats" +webhook: + server: + port: 8080 + address: "0.0.0.0" + discord: + client_id: 0 + public_key: "" \ No newline at end of file diff --git a/webhook/src/main.rs b/webhook/src/main.rs index c127c2c..6ea22fc 100644 --- a/webhook/src/main.rs +++ b/webhook/src/main.rs @@ -1,22 +1,26 @@ use std::{net::ToSocketAddrs, sync::Arc}; -mod handler; mod config; +mod handler; use crate::handler::make_service::MakeSvc; -use hyper::Server; -use log::{info, error}; -use common::config::Settings; use crate::config::Config; +use common::config::Settings; +use hyper::Server; +use log::{error, info}; #[tokio::main] async fn main() { let settings: Settings = Settings::new("webhook").unwrap(); + println!("{:?}", settings); - let addr = format!("{}:{}", settings.config.server.address, settings.config.server.port) - .to_socket_addrs() - .unwrap() - .next() - .unwrap(); + let addr = format!( + "{}:{}", + settings.config.server.address, settings.config.server.port + ) + .to_socket_addrs() + .unwrap() + .next() + .unwrap(); info!( "Starting server on {}:{}",