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 core::{str::FromStr, time::Duration};
6    use http::Uri;
7    use std::env;
8
9    use crate::parse_uri;
10
11    pub fn duration(name: &str) -> Option<Duration> {
12        Some(Duration::from_secs_f32(
13            env::var(name).ok()?.parse::<f32>().ok()?,
14        ))
15    }
16
17    pub fn int<T: FromStr>(name: &str) -> Option<T> {
18        env::var(name).ok()?.parse::<T>().ok()
19    }
20
21    pub fn bool(name: &str) -> Option<bool> {
22        let var = env::var(name).ok()?;
23        Some(var == "true" || var == "1")
24    }
25
26    pub fn str_not_empty(name: &str) -> Option<String> {
27        env::var(name).ok().filter(|s| !s.is_empty())
28    }
29
30    pub fn uri(name: &str) -> Option<Uri> {
31        parse_uri(&str_not_empty(name)?).ok()
32    }
33}