| 91 | } |
| 92 | |
| 93 | fn extract_var(line: &str) -> Result<(&str, &str), MetadataError> { |
| 94 | let mut iter = line.trim().splitn(2, '='); |
| 95 | |
| 96 | let key = iter |
| 97 | .next() |
| 98 | .map(|s| s.trim()) |
| 99 | .ok_or_else(|| MetadataError::InvalidEnvVar(line.into()))?; |
| 100 | if key.is_empty() { |
| 101 | Err(MetadataError::InvalidEnvVar(line.into()))?; |
| 102 | } |
| 103 | |
| 104 | let value = iter |
| 105 | .next() |
| 106 | .map(|s| s.trim()) |
| 107 | .ok_or_else(|| MetadataError::InvalidEnvVar(line.into()))?; |
| 108 | if value.is_empty() { |
| 109 | Err(MetadataError::InvalidEnvVar(line.into()))?; |
| 110 | } |
| 111 | |
| 112 | Ok((key, value)) |
| 113 | } |
| 114 | |
| 115 | pub trait EnvVarExtractor { |
| 116 | fn var(&self, name: &str) -> Result<String, VarError>; |