Skip to main content

opensession_api/
deploy.rs

1//! Deployment profile flags shared by server and worker runtimes.
2
3/// Env var controlling anonymous public feed listing on the Axum server.
4pub const ENV_PUBLIC_FEED_ENABLED: &str = "OPENSESSION_PUBLIC_FEED_ENABLED";
5
6/// Env var selecting the session score plugin used during upload.
7pub const ENV_SESSION_SCORE_PLUGIN: &str = "OPENSESSION_SESSION_SCORE_PLUGIN";
8
9/// Parse a human-friendly boolean env flag value.
10///
11/// Accepted truthy values:
12/// - `1`
13/// - `true`
14/// - `yes`
15/// - `on`
16pub fn parse_bool_flag(raw: Option<&str>, default: bool) -> bool {
17    raw.map(|value| {
18        matches!(
19            value.trim().to_ascii_lowercase().as_str(),
20            "1" | "true" | "yes" | "on"
21        )
22    })
23    .unwrap_or(default)
24}
25
26#[cfg(test)]
27mod tests {
28    use super::parse_bool_flag;
29
30    #[test]
31    fn parses_truthy_values() {
32        for value in ["1", "true", "TRUE", "yes", "on"] {
33            assert!(parse_bool_flag(Some(value), false));
34        }
35    }
36
37    #[test]
38    fn parses_falsy_values() {
39        for value in ["0", "false", "no", "off", ""] {
40            assert!(!parse_bool_flag(Some(value), true));
41        }
42    }
43
44    #[test]
45    fn uses_default_for_missing_value() {
46        assert!(parse_bool_flag(None, true));
47        assert!(!parse_bool_flag(None, false));
48    }
49}