]> git.puffer.fish Git - matthieu/nova.git/commitdiff
fix: unable to set nested variables
authorMatthieu <matthieu@developershouse.xyz>
Sat, 2 Oct 2021 12:40:48 +0000 (16:40 +0400)
committerMatthieu <matthieu@developershouse.xyz>
Sat, 2 Oct 2021 12:40:48 +0000 (16:40 +0400)
common/rust/src/config.rs
webhook/config/default.yaml [new file with mode: 0644]
webhook/src/main.rs

index c158a2143f301bfc3c4a81e80f9d2dab323e9807..d4437a95b50faf3092849e442e984f482c6bdaeb 100644 (file)
@@ -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<T> {
     pub nats: crate::nats::NatsConfiguration,
 }
 
-impl<T> Settings<T> where T: Deserialize<'static> + std::default::Default + Clone {
+impl<T> Settings<T>
+where
+    T: Deserialize<'static> + std::default::Default + Clone,
+{
     pub fn new(service_name: &str) -> Result<Settings<T>, ConfigError> {
         let mut default = Config::default();
         // this file my be shared with all the components
@@ -25,8 +27,10 @@ impl<T> Settings<T> 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<T> = 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 (file)
index 0000000..7f88e6f
--- /dev/null
@@ -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
index c127c2c459bafc768a07c303407ee661d11dc0c7..6ea22fc703e6a71fcc8b4de5dc7cbeb354201e54 100644 (file)
@@ -1,22 +1,26 @@
 use std::{net::ToSocketAddrs, sync::Arc};\r
-mod handler;\r
 mod config;\r
+mod handler;\r
 use crate::handler::make_service::MakeSvc;\r
 \r
-use hyper::Server;\r
-use log::{info, error};\r
-use common::config::Settings;\r
 use crate::config::Config;\r
+use common::config::Settings;\r
+use hyper::Server;\r
+use log::{error, info};\r
 \r
 #[tokio::main]\r
 async fn main() {\r
     let settings: Settings<Config> = Settings::new("webhook").unwrap();\r
+    println!("{:?}", settings);\r
 \r
-    let addr = format!("{}:{}", settings.config.server.address, settings.config.server.port)\r
-        .to_socket_addrs()\r
-        .unwrap()\r
-        .next()\r
-        .unwrap();\r
+    let addr = format!(\r
+        "{}:{}",\r
+        settings.config.server.address, settings.config.server.port\r
+    )\r
+    .to_socket_addrs()\r
+    .unwrap()\r
+    .next()\r
+    .unwrap();\r
 \r
     info!(\r
         "Starting server on {}:{}",\r