| 
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -10,6 +10,7 @@ lazy_static! { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        println!("Error loading config:\n\t{:?}\n", e); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        exit(12) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    }); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    pub static ref CONFIG_PATH: String = "data/config.json".into(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					macro_rules! make_config { | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -86,7 +87,7 @@ macro_rules! make_config { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                // TODO: Get config.json from CONFIG_PATH env var or -c <CONFIG> console option
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                // Loading from file
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                let mut builder = match ConfigBuilder::from_file("data/config.json") { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                let mut builder = match ConfigBuilder::from_file(&CONFIG_PATH) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                    Ok(builder) => builder, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                    Err(_) => ConfigBuilder::default() | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                }; | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -200,17 +201,23 @@ fn validate_config(cfg: &ConfigItems) -> Result<(), Error> { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					impl Config { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    pub fn get_config(&self) -> ConfigItems { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        self.inner.read().unwrap().config.clone() | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    pub fn get_config(&self) -> String { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        let cfg = &self.inner.read().unwrap().config; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        serde_json::to_string_pretty(cfg).unwrap() | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    pub fn update_config(&self, other: ConfigBuilder) -> Result<(), Error> { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        let config = other.build(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        validate_config(&config)?; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        self.inner.write().unwrap().config = config; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        let config_str = serde_json::to_string_pretty(&config)?; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        self.inner.write().unwrap().config = config.clone(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        // TODO: Save to file
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        //Save to file
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        use std::{fs::File, io::Write}; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        let mut file = File::create(&*CONFIG_PATH)?; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        file.write_all(config_str.as_bytes())?; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        Ok(()) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    } | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
				
				 | 
				
					
  |