Skip to main content

libdd_common/
config.rs

1// Copyright 2023-Present Datadog, Inc. https://www.datadoghq.com/
2// SPDX-License-Identifier: Apache-2.0
3
4pub mod parse_env {
5    use hyper::Uri;
6    use std::{env, str::FromStr, time::Duration};
7
8    use crate::parse_uri;
9
10    pub fn duration(name: &str) -> Option<Duration> {
11        Some(Duration::from_secs_f32(
12            env::var(name).ok()?.parse::<f32>().ok()?,
13        ))
14    }
15
16    pub fn int<T: FromStr>(name: &str) -> Option<T> {
17        env::var(name).ok()?.parse::<T>().ok()
18    }
19
20    pub fn bool(name: &str) -> Option<bool> {
21        let var = env::var(name).ok()?;
22        Some(var == "true" || var == "1")
23    }
24
25    pub fn str_not_empty(name: &str) -> Option<String> {
26        env::var(name).ok().filter(|s| !s.is_empty())
27    }
28
29    pub fn uri(name: &str) -> Option<Uri> {
30        parse_uri(&str_not_empty(name)?).ok()
31    }
32}