Split files add carman module and settings file
This commit is contained in:
		
							parent
							
								
									2e3c46f5cd
								
							
						
					
					
						commit
						8643faf519
					
				|  | @ -1,5 +1,7 @@ | ||||||
| use carman::Arguments; | mod carman; | ||||||
| use clap::Parser; | use clap::Parser; | ||||||
|  | use carman::Arguments; | ||||||
|  | use carman::Settings; | ||||||
| 
 | 
 | ||||||
| /// Carman code deployment Daemon
 | /// Carman code deployment Daemon
 | ||||||
| 
 | 
 | ||||||
|  | @ -0,0 +1,53 @@ | ||||||
|  | use config::{Config, ConfigError, Environment, File}; | ||||||
|  | use serde_derive::Deserialize; | ||||||
|  | use std::env; | ||||||
|  | 
 | ||||||
|  | #[derive(Debug, Deserialize)] | ||||||
|  | #[allow(unused)] | ||||||
|  | struct Repository { | ||||||
|  |     key: String, | ||||||
|  |     token: String, | ||||||
|  |     url: String, | ||||||
|  |     version: u8, | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | #[derive(Debug, Deserialize)] | ||||||
|  | #[allow(unused)] | ||||||
|  | pub struct Settings { | ||||||
|  |     debug: bool, | ||||||
|  |     log: u8, | ||||||
|  |     repository: Repository, | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | impl Settings { | ||||||
|  |     pub fn new() -> Result<Self, ConfigError> { | ||||||
|  |         let run_mode = env::var("RUN_MODE").unwrap_or_else(|_| "development".into()); | ||||||
|  | 
 | ||||||
|  |         let s = Config::builder() | ||||||
|  |             // Start off by merging in the "default" configuration file
 | ||||||
|  |             .add_source(File::with_name("examples/hierarchical-env/config/default")) | ||||||
|  |             // Add in the current environment file
 | ||||||
|  |             // Default to 'development' env
 | ||||||
|  |             // Note that this file is _optional_
 | ||||||
|  |             .add_source( | ||||||
|  |                 File::with_name(&format!("examples/hierarchical-env/config/{}", run_mode)) | ||||||
|  |                     .required(false), | ||||||
|  |             ) | ||||||
|  |             // Add in a local configuration file
 | ||||||
|  |             // This file shouldn't be checked in to git
 | ||||||
|  |             .add_source(File::with_name("examples/hierarchical-env/config/local").required(false)) | ||||||
|  |             // Add in settings from the environment (with a prefix of APP)
 | ||||||
|  |             // Eg.. `APP_DEBUG=1 ./target/app` would set the `debug` key
 | ||||||
|  |             .add_source(Environment::with_prefix("carman")) | ||||||
|  |             // You may also programmatically change settings
 | ||||||
|  |             .set_override("database.url", "postgres://")? | ||||||
|  |             .build()?; | ||||||
|  | 
 | ||||||
|  |         // Now that we're done, let's access our configuration
 | ||||||
|  |         println!("debug: {:?}", s.get_bool("debug")); | ||||||
|  |         println!("database: {:?}", s.get::<String>("database.url")); | ||||||
|  | 
 | ||||||
|  |         // You can deserialize (and thus freeze) the entire configuration as
 | ||||||
|  |         s.try_deserialize() | ||||||
|  |     } | ||||||
|  | } | ||||||
		Loading…
	
		Reference in New Issue