diff --git a/src/meta_plugin/binary.rs b/src/meta_plugin/binary.rs index 0c11cff..78714fd 100644 --- a/src/meta_plugin/binary.rs +++ b/src/meta_plugin/binary.rs @@ -45,16 +45,17 @@ impl BinaryMetaPlugin { .and_then(|v| v.as_u64()) .unwrap_or(PIPESIZE as u64) as usize; + let mut base = crate::meta_plugin::BaseMetaPlugin::new(); + base.outputs = final_outputs; + base.options = final_options; + BinaryMetaPlugin { meta_name: "binary".to_string(), buffer: Vec::new(), max_buffer_size, is_saved: false, item_id: None, - base: crate::meta_plugin::BaseMetaPlugin { - outputs: final_outputs, - options: final_options, - }, + base, } } @@ -145,10 +146,6 @@ impl MetaPlugin for BinaryMetaPlugin { self.base.options_mut() } - fn options_mut(&mut self) -> &mut std::collections::HashMap { - &mut self.base.options - } - fn configure_options(&mut self, options: &std::collections::HashMap) -> Result<()> { if let Some(max_buffer_size) = options.get("max_buffer_size") { if let Some(size) = max_buffer_size.as_u64() { diff --git a/src/meta_plugin/magic.rs b/src/meta_plugin/magic.rs index 7de51c7..a66b761 100644 --- a/src/meta_plugin/magic.rs +++ b/src/meta_plugin/magic.rs @@ -14,8 +14,7 @@ pub struct MagicFileMetaPlugin { is_saved: bool, item_id: Option, cookie: Option, - outputs: std::collections::HashMap, - options: std::collections::HashMap, + base: crate::meta_plugin::BaseMetaPlugin, } impl MagicFileMetaPlugin { @@ -48,14 +47,17 @@ impl MagicFileMetaPlugin { .and_then(|v| v.as_u64()) .unwrap_or(PIPESIZE as u64) as usize; + let mut base = crate::meta_plugin::BaseMetaPlugin::new(); + base.outputs = final_outputs; + base.options = final_options; + MagicFileMetaPlugin { buffer: Vec::new(), max_buffer_size, is_saved: false, item_id: None, cookie: None, - outputs: final_outputs, - options: final_options, + base, } } @@ -108,7 +110,7 @@ impl MagicFileMetaPlugin { if let Some(meta_data) = crate::meta_plugin::process_metadata_outputs( name, result, - &self.outputs + self.base.outputs() ) { metadata.push(meta_data); } @@ -199,11 +201,11 @@ impl MetaPlugin for MagicFileMetaPlugin { } fn outputs(&self) -> &std::collections::HashMap { - &self.outputs + self.base.outputs() } fn outputs_mut(&mut self) -> &mut std::collections::HashMap { - &mut self.outputs + self.base.outputs_mut() } fn default_outputs(&self) -> Vec { @@ -217,11 +219,11 @@ impl MetaPlugin for MagicFileMetaPlugin { } fn options(&self) -> &std::collections::HashMap { - &self.options + self.base.options() } fn options_mut(&mut self) -> &mut std::collections::HashMap { - &mut self.options + self.base.options_mut() } } diff --git a/src/meta_plugin/system.rs b/src/meta_plugin/system.rs index 1c47e93..02092bd 100644 --- a/src/meta_plugin/system.rs +++ b/src/meta_plugin/system.rs @@ -91,8 +91,7 @@ impl MetaPlugin for CwdMetaPlugin { pub struct UidMetaPlugin { meta_name: String, is_saved: bool, - outputs: std::collections::HashMap, - options: std::collections::HashMap, + base: crate::meta_plugin::BaseMetaPlugin, } impl UidMetaPlugin { @@ -110,7 +109,7 @@ impl UidMetaPlugin { // Start with default outputs let mut final_outputs = std::collections::HashMap::new(); - let default_outputs = Self::default().default_outputs(); + let default_outputs = vec!["uid".to_string()]; for output_name in default_outputs { final_outputs.insert(output_name.clone(), serde_yaml::Value::String(output_name)); } @@ -120,11 +119,14 @@ impl UidMetaPlugin { } } + let mut base = crate::meta_plugin::BaseMetaPlugin::new(); + base.outputs = final_outputs; + base.options = final_options; + UidMetaPlugin { meta_name: "uid".to_string(), is_saved: false, - outputs: final_outputs, - options: final_options, + base, } } @@ -191,8 +193,7 @@ impl MetaPlugin for UidMetaPlugin { pub struct UserMetaPlugin { meta_name: String, is_saved: bool, - outputs: std::collections::HashMap, - options: std::collections::HashMap, + base: crate::meta_plugin::BaseMetaPlugin, } impl UserMetaPlugin { @@ -210,7 +211,7 @@ impl UserMetaPlugin { // Start with default outputs let mut final_outputs = std::collections::HashMap::new(); - let default_outputs = Self::default().default_outputs(); + let default_outputs = vec!["user".to_string()]; for output_name in default_outputs { final_outputs.insert(output_name.clone(), serde_yaml::Value::String(output_name)); } @@ -220,11 +221,14 @@ impl UserMetaPlugin { } } + let mut base = crate::meta_plugin::BaseMetaPlugin::new(); + base.outputs = final_outputs; + base.options = final_options; + UserMetaPlugin { meta_name: "user".to_string(), is_saved: false, - outputs: final_outputs, - options: final_options, + base, } } @@ -259,11 +263,11 @@ impl MetaPlugin for UserMetaPlugin { } fn outputs(&self) -> &std::collections::HashMap { - &self.outputs + self.base.outputs() } fn outputs_mut(&mut self) -> &mut std::collections::HashMap { - &mut self.outputs + self.base.outputs_mut() } fn default_outputs(&self) -> Vec { @@ -275,15 +279,11 @@ impl MetaPlugin for UserMetaPlugin { } fn options(&self) -> &std::collections::HashMap { - &self.base.options + self.base.options() } fn options_mut(&mut self) -> &mut std::collections::HashMap { - &mut self.base.options - } - - fn options_mut(&mut self) -> &mut std::collections::HashMap { - &mut self.options + self.base.options_mut() } }