pub const CLASH_DISABLE_ENV: &str = "CLASH_DISABLE";
pub const CLASH_PASSTHROUGH_ENV: &str = "CLASH_PASSTHROUGH";
pub fn is_disabled() -> bool {
std::env::var(CLASH_DISABLE_ENV)
.ok()
.is_some_and(|v| is_truthy_disable_value(&v))
}
pub fn is_passthrough() -> bool {
std::env::var(CLASH_PASSTHROUGH_ENV)
.ok()
.is_some_and(|v| is_truthy_disable_value(&v))
}
pub(crate) fn is_truthy_disable_value(value: &str) -> bool {
!value.is_empty() && value != "0" && value != "false"
}
#[cfg(test)]
mod test {
use super::*;
#[test]
fn is_truthy_disable_value_not_set() {
assert!(!is_truthy_disable_value(""));
}
#[test]
fn is_truthy_disable_value_falsy() {
assert!(!is_truthy_disable_value("0"));
assert!(!is_truthy_disable_value("false"));
}
#[test]
fn is_truthy_disable_value_truthy() {
assert!(is_truthy_disable_value("1"));
assert!(is_truthy_disable_value("true"));
assert!(is_truthy_disable_value("yes"));
assert!(is_truthy_disable_value("anything"));
}
}