diff --git a/src/meta_plugin.rs b/src/meta_plugin.rs index cafc570..62fe622 100644 --- a/src/meta_plugin.rs +++ b/src/meta_plugin.rs @@ -16,7 +16,7 @@ use strum::IntoEnumIterator; #[derive(Debug, Eq, PartialEq, Clone, strum::EnumIter, strum::Display, strum::EnumString, Enum)] #[strum(ascii_case_insensitive)] pub enum MetaPluginType { - FileMagic + FileMagic, } pub trait MetaPlugin { @@ -37,7 +37,7 @@ use std::io::Write; lazy_static! { pub static ref META_PLUGIN_PROGRAMS: EnumMap> = enum_map! { MetaPluginType::FileMagic => { - let program = MetaPluginProgram::new("file", vec!["-bE", "-"]); + let program = MetaPluginProgram::new("file", vec!["-bE", "-"], "file_magic".to_string()); if program.supported { Some(program) } else { None } } }; @@ -45,6 +45,18 @@ lazy_static! { pub fn get_meta_plugin(meta_plugin_type: MetaPluginType) -> Box { match meta_plugin_type { - MetaPluginType::FileMagic => Box::new(MetaPluginProgram::new("file", vec!["-bE", "-"])), + MetaPluginType::FileMagic => Box::new(MetaPluginProgram::new("file", vec!["-bE", "-"], "file_magic".to_string())), } } + +pub fn default_meta_plugin_type() -> MetaPluginType { + let mut default = MetaPluginType::FileMagic; + for meta_plugin_type in MetaPluginType::iter() { + let meta_plugin = get_meta_plugin(meta_plugin_type.clone()); + if meta_plugin.is_supported() { + default = meta_plugin_type; + break; + } + } + default +}