#[derive(Debug, Clone, Copy)]
pub struct PromptDescriptor {
pub key: &'static str,
pub description: &'static str,
}
pub const KNOWN_PROMPTS: &[PromptDescriptor] = &[PromptDescriptor {
key: "plist.install_filters",
description:
"Offer to install git clean/smudge filters when a pack contains tracked .plist files",
}];
pub fn lookup(key: &str) -> Option<&'static PromptDescriptor> {
KNOWN_PROMPTS.iter().find(|d| d.key == key)
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn keys_are_unique() {
let mut seen = std::collections::HashSet::new();
for d in KNOWN_PROMPTS {
assert!(seen.insert(d.key), "duplicate prompt key: {}", d.key);
}
}
#[test]
fn keys_are_alphabetised() {
let keys: Vec<_> = KNOWN_PROMPTS.iter().map(|d| d.key).collect();
let mut sorted = keys.clone();
sorted.sort();
assert_eq!(keys, sorted, "KNOWN_PROMPTS must be sorted by key");
}
#[test]
fn lookup_finds_known_keys() {
assert!(lookup("plist.install_filters").is_some());
assert!(lookup("nonexistent.key").is_none());
}
}