33 lines
1.1 KiB
Rust
33 lines
1.1 KiB
Rust
#[cfg(not(coverage))]
|
|
/// Keeps `parse_env_file` explicit because it sits on camera selection, where negotiated profiles must match the server output contract.
|
|
/// Inputs are the typed parameters; output is the return value or side effect.
|
|
fn parse_env_file(text: &str) -> HashMap<String, String> {
|
|
let mut out = HashMap::new();
|
|
for line in text.lines() {
|
|
let line = line.trim();
|
|
if line.is_empty() || line.starts_with('#') {
|
|
continue;
|
|
}
|
|
let mut parts = line.splitn(2, '=');
|
|
let key = match parts.next() {
|
|
Some(v) => v.trim(),
|
|
None => continue,
|
|
};
|
|
let val = match parts.next() {
|
|
Some(v) => v.trim(),
|
|
None => continue,
|
|
};
|
|
out.insert(key.to_string(), val.to_string());
|
|
}
|
|
out
|
|
}
|
|
|
|
pub(crate) fn read_u32_from_env(key: &str) -> Option<u32> {
|
|
std::env::var(key).ok().and_then(|v| v.parse::<u32>().ok())
|
|
}
|
|
|
|
#[cfg(not(coverage))]
|
|
fn read_u32_from_map(map: &HashMap<String, String>, key: &str) -> Option<u32> {
|
|
map.get(key).and_then(|v| v.parse::<u32>().ok())
|
|
}
|