Skip to main content

unbanished_formats/
env.rs

1//! The program's environment variables (not in the original).
2//!
3//! Each setting has a name like `USER_DIR` and is read from `UNBANISHED_USER_DIR`. The prefix is
4//! in one place, here.
5
6/// The value of `UNBANISHED_<name>`.
7pub fn var(name: &str) -> Result<String, std::env::VarError> {
8    std::env::var(format!("UNBANISHED_{name}"))
9}
10
11/// [`var`] as an `OsString`, for paths.
12pub fn var_os(name: &str) -> Option<std::ffi::OsString> {
13    std::env::var_os(format!("UNBANISHED_{name}"))
14}
15
16#[cfg(test)]
17mod tests {
18    use super::*;
19
20    #[test]
21    fn reads_the_unbanished_name() {
22        std::env::set_var("UNBANISHED_ENV_TEST_A", "set");
23        assert_eq!(var("ENV_TEST_A").as_deref(), Ok("set"));
24        assert_eq!(
25            var_os("ENV_TEST_A").as_deref(),
26            Some(std::ffi::OsStr::new("set"))
27        );
28        assert!(var("ENV_TEST_NEITHER").is_err());
29    }
30}