use crate::{
FileCommandMimeDetector,
MimeConfig,
MimeDetector,
MimeResult,
};
use super::{
MimeDetectorAvailability,
MimeDetectorProvider,
};
#[derive(Debug, Clone, Copy, Default)]
pub struct FileCommandMimeDetectorProvider;
impl MimeDetectorProvider for FileCommandMimeDetectorProvider {
fn id(&self) -> &'static str {
"file"
}
fn aliases(&self) -> &'static [&'static str] {
&["file-command", "file-command-mime-detector"]
}
fn priority(&self) -> i32 {
10
}
fn availability(&self, _config: &MimeConfig) -> MimeDetectorAvailability {
if FileCommandMimeDetector::is_available() {
MimeDetectorAvailability::Available
} else {
MimeDetectorAvailability::Unavailable {
reason: "`file` command is not available".to_owned(),
}
}
}
fn create(&self, config: &MimeConfig) -> MimeResult<Box<dyn MimeDetector>> {
Ok(Box::new(FileCommandMimeDetector::from_mime_config(
config.clone(),
)))
}
}