use std::{ env::var, ffi::OsStr };
fn str_to_bool(value: &str) -> bool {
!matches!(value, "" | "0" | "no" | "off" | "false")
}
pub(crate) fn get_github_token() -> Option<String> {
if var_bool("PROTOC_PREBUILT_NOT_ADD_GITHUB_TOKEN") {
return None
}
let github_token_key = var("PROTOC_PREBUILT_GITHUB_TOKEN_ENV_NAME")
.unwrap_or("GITHUB_TOKEN".to_string());
var(github_token_key)
.ok()
.map(|value| value.trim().to_string())
.filter(|value| !value.is_empty())
}
pub(crate) fn var_bool<K: AsRef<OsStr>>(key: K) -> bool {
match var(key) {
Ok(value) => str_to_bool(value.as_str()),
Err(_) => false
}
}
#[cfg(test)]
mod test {
use super::str_to_bool;
#[test]
fn true_values() {
assert!(str_to_bool("1"));
assert!(str_to_bool("yes"));
assert!(str_to_bool("on"));
assert!(str_to_bool("true"));
assert!(str_to_bool("RaNdOmStRiNg"));
}
#[test]
fn false_values() {
assert!(!str_to_bool(""));
assert!(!str_to_bool("0"));
assert!(!str_to_bool("no"));
assert!(!str_to_bool("off"));
assert!(!str_to_bool("false"));
}
}