diff --git a/src/main.rs b/src/main.rs index 3accf9a..f931414 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,4 +1,4 @@ -use redis::Commands; +use redis::{Commands, ConnectionAddr}; // json parsing use serde::{ Deserialize, Serialize }; use serde_json; @@ -19,9 +19,9 @@ use std::sync::Arc; use inotify::{ Inotify, WatchMask }; // logging use std::io::Write; -use chrono::Local; +use chrono::{ Local, NaiveDate }; use env_logger::Builder; -use log::{error, log, max_level, warn, LevelFilter}; +use log::{error, warn, LevelFilter}; /// # an Error enum (nextly will be deleted and replaced) enum CustomError { @@ -142,11 +142,22 @@ async fn main() { error!("Cannot find needed stream to get configuration"); return; } - let config: String = conn.xrevrange("config_stream", "", "").inspect_err(|_| { - error!("Cannot fetch config"); - return String::new(); + // error + let config: Vec<(String, Vec<(String, String)>)> = conn.xrevrange_count("config_stream", "+", "-", 1) + .unwrap_or_else(|er| { + println!("error: {}", er); + return Vec::new(); }); - let processes = parse_extern_config(&config); + println!("external config: {:?}", config); + + let processes: Processes; + if config.is_empty() { + error!("No suitable config was given. Getting local config..."); + processes = load_processes("settings.json"); + } else { + println!("{:?}+++{}", std::time::SystemTime::now(), &config[1].0); + processes = parse_extern_config(&config[1].0); + } // let processes: Processes = { // let mut _temp = String::new(); // loop { @@ -200,6 +211,10 @@ async fn main() { return; } +fn save_new_config(config: &str) -> Result<(), CustomError> { + Ok(()) +} + async fn create_watcher(filename: &str, path: &str) -> Result { let src = format!("{}{}", path, filename); let mut inotify: Inotify = Inotify::init().expect(&("Error: Cannot create watcher for ".to_owned() + &src));