#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub(crate) enum MimeDetectorBackend {
Repository,
FileCommand,
}
impl MimeDetectorBackend {
pub(crate) fn select(configured: &str, file_available: bool) -> Self {
if let Some(backend) = Self::from_name(configured) {
backend
} else if file_available {
Self::FileCommand
} else {
Self::Repository
}
}
pub(crate) fn from_name(name: &str) -> Option<Self> {
match name.to_ascii_lowercase().as_str() {
"repository" | "repository-mime-detector" => Some(Self::Repository),
"file" | "file-command" | "file-command-mime-detector" => Some(Self::FileCommand),
_ => None,
}
}
}