#[must_use]
pub fn flag_for(env_var: &str) -> String {
let stem = env_var.strip_prefix("NOTEDTHAT_").unwrap_or(env_var);
let mut flag = String::with_capacity(stem.len() + 2);
flag.push_str("--");
for ch in stem.chars() {
flag.push(if ch == '_' {
'-'
} else {
ch.to_ascii_lowercase()
});
}
flag
}
#[must_use]
pub fn setting(env_var: &str) -> String {
format!("{env_var} ({})", flag_for(env_var))
}
#[cfg(test)]
mod tests {
use super::{flag_for, setting};
#[test]
fn the_binary_namespace_is_dropped_but_other_prefixes_are_kept() {
assert_eq!(flag_for("NOTEDTHAT_API_TOKEN"), "--api-token");
assert_eq!(flag_for("EMBEDDING_API_KEY"), "--embedding-api-key");
}
#[test]
fn a_single_word_variable_becomes_a_single_word_flag() {
assert_eq!(flag_for("NOTEDTHAT_KBS"), "--kbs");
}
#[test]
fn a_diagnostic_names_both_forms() {
assert_eq!(
setting("NOTEDTHAT_LISTEN_ADDR"),
"NOTEDTHAT_LISTEN_ADDR (--listen-addr)"
);
}
}