mirror of
				https://github.com/dani-garcia/vaultwarden.git
				synced 2025-10-30 05:11:15 +00:00 
			
		
		
		
	Read config vars from files
This commit is contained in:
		
					parent
					
						
							
								be1ddb4203
							
						
					
				
			
			
				commit
				
					
						e8ef76b8f9
					
				
			
		
					 1 changed files with 21 additions and 4 deletions
				
			
		
							
								
								
									
										25
									
								
								src/util.rs
									
										
									
									
									
								
							
							
						
						
									
										25
									
								
								src/util.rs
									
										
									
									
									
								
							|  | @ -283,20 +283,37 @@ where | |||
| 
 | ||||
| use std::env; | ||||
| 
 | ||||
| pub fn get_env_str_value(key: &str) -> Option<String> | ||||
| { | ||||
|     let key_file = format!("{}_FILE", key); | ||||
|     let value_from_env = env::var(key); | ||||
|     let value_file = env::var(&key_file); | ||||
| 
 | ||||
|     match (value_from_env, value_file) { | ||||
|         (Ok(_), Ok(_)) => panic!("You should not define both {} and {}!", key, key_file), | ||||
|         (Ok(v_env), Err(_)) => Some(v_env), | ||||
|         (Err(_), Ok(v_file)) => match fs::read_to_string(v_file) { | ||||
|             Ok(content) => Some(content.trim().to_string()), | ||||
|             Err(e) => panic!("Failed to load {}: {:?}", key, e) | ||||
|         }, | ||||
|         _ => None | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| pub fn get_env<V>(key: &str) -> Option<V> | ||||
| where | ||||
|     V: FromStr, | ||||
| { | ||||
|     try_parse_string(env::var(key).ok()) | ||||
|     try_parse_string(get_env_str_value(key)) | ||||
| } | ||||
| 
 | ||||
| const TRUE_VALUES: &[&str] = &["true", "t", "yes", "y", "1"]; | ||||
| const FALSE_VALUES: &[&str] = &["false", "f", "no", "n", "0"]; | ||||
| 
 | ||||
| pub fn get_env_bool(key: &str) -> Option<bool> { | ||||
|     match env::var(key) { | ||||
|         Ok(val) if TRUE_VALUES.contains(&val.to_lowercase().as_ref()) => Some(true), | ||||
|         Ok(val) if FALSE_VALUES.contains(&val.to_lowercase().as_ref()) => Some(false), | ||||
|     match get_env_str_value(key) { | ||||
|         Some(val) if TRUE_VALUES.contains(&val.to_lowercase().as_ref()) => Some(true), | ||||
|         Some(val) if FALSE_VALUES.contains(&val.to_lowercase().as_ref()) => Some(false), | ||||
|         _ => None, | ||||
|     } | ||||
| } | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue