diff --git a/src/meta_plugin.rs b/src/meta_plugin.rs index 4feb352..c77e6a4 100644 --- a/src/meta_plugin.rs +++ b/src/meta_plugin.rs @@ -104,6 +104,10 @@ pub trait MetaPlugin { fn outputs(&self) -> &std::collections::HashMap; fn outputs_mut(&mut self) -> &mut std::collections::HashMap; + // Access to options mapping + fn options(&self) -> &std::collections::HashMap; + fn options_mut(&mut self) -> &mut std::collections::HashMap; + // Get the default output names this plugin can produce fn default_outputs(&self) -> Vec { // Default implementation returns empty - plugins should override this diff --git a/src/meta_plugin/binary.rs b/src/meta_plugin/binary.rs index bc95156..1789483 100644 --- a/src/meta_plugin/binary.rs +++ b/src/meta_plugin/binary.rs @@ -12,6 +12,7 @@ pub struct BinaryMetaPlugin { is_saved: bool, item_id: Option, outputs: std::collections::HashMap, + options: std::collections::HashMap, } impl BinaryMetaPlugin { @@ -50,6 +51,7 @@ impl BinaryMetaPlugin { is_saved: false, item_id: None, outputs: final_outputs, + options: final_options, } } @@ -140,4 +142,12 @@ impl MetaPlugin for BinaryMetaPlugin { options.insert("max_buffer_size".to_string(), serde_yaml::Value::Number(4096.into())); options } + + fn options(&self) -> &std::collections::HashMap { + &self.options + } + + fn options_mut(&mut self) -> &mut std::collections::HashMap { + &mut self.options + } } diff --git a/src/meta_plugin/digest.rs b/src/meta_plugin/digest.rs index 83f642b..75e949c 100644 --- a/src/meta_plugin/digest.rs +++ b/src/meta_plugin/digest.rs @@ -11,6 +11,7 @@ pub struct DigestSha256MetaPlugin { meta_name: String, item_id: Option, outputs: std::collections::HashMap, + options: std::collections::HashMap, } impl DigestSha256MetaPlugin { @@ -35,6 +36,7 @@ impl DigestSha256MetaPlugin { meta_name: "digest_sha256".to_string(), item_id: None, outputs: final_outputs, + options: final_options, } } @@ -88,6 +90,14 @@ impl MetaPlugin for DigestSha256MetaPlugin { fn default_options(&self) -> std::collections::HashMap { std::collections::HashMap::new() } + + fn options(&self) -> &std::collections::HashMap { + &self.options + } + + fn options_mut(&mut self) -> &mut std::collections::HashMap { + &mut self.options + } } @@ -96,6 +106,7 @@ pub struct ReadTimeMetaPlugin { start_time: Option, meta_name: String, outputs: std::collections::HashMap, + options: std::collections::HashMap, } impl ReadTimeMetaPlugin { @@ -119,6 +130,7 @@ impl ReadTimeMetaPlugin { start_time: None, meta_name: "read_time".to_string(), outputs: final_outputs, + options: final_options, } } @@ -161,6 +173,14 @@ impl MetaPlugin for ReadTimeMetaPlugin { fn default_options(&self) -> std::collections::HashMap { std::collections::HashMap::new() } + + fn options(&self) -> &std::collections::HashMap { + &self.options + } + + fn options_mut(&mut self) -> &mut std::collections::HashMap { + &mut self.options + } } #[derive(Debug, Clone, Default)] @@ -169,6 +189,7 @@ pub struct ReadRateMetaPlugin { bytes_read: u64, meta_name: String, outputs: std::collections::HashMap, + options: std::collections::HashMap, } impl ReadRateMetaPlugin { @@ -193,6 +214,7 @@ impl ReadRateMetaPlugin { bytes_read: 0, meta_name: "read_rate".to_string(), outputs: final_outputs, + options: final_options, } } @@ -236,4 +258,12 @@ impl MetaPlugin for ReadRateMetaPlugin { fn default_options(&self) -> std::collections::HashMap { std::collections::HashMap::new() } + + fn options(&self) -> &std::collections::HashMap { + &self.options + } + + fn options_mut(&mut self) -> &mut std::collections::HashMap { + &mut self.options + } } diff --git a/src/meta_plugin/magic.rs b/src/meta_plugin/magic.rs index f9d9916..4aef718 100644 --- a/src/meta_plugin/magic.rs +++ b/src/meta_plugin/magic.rs @@ -13,6 +13,7 @@ pub struct MagicFileMetaPlugin { item_id: Option, cookie: Option, outputs: std::collections::HashMap, + options: std::collections::HashMap, } impl MagicFileMetaPlugin { @@ -51,6 +52,7 @@ impl MagicFileMetaPlugin { item_id: None, cookie: None, outputs: final_outputs, + options: final_options, } } @@ -186,5 +188,13 @@ impl MetaPlugin for MagicFileMetaPlugin { options.insert("max_buffer_size".to_string(), serde_yaml::Value::Number(4096.into())); options } + + fn options(&self) -> &std::collections::HashMap { + &self.options + } + + fn options_mut(&mut self) -> &mut std::collections::HashMap { + &mut self.options + } } diff --git a/src/meta_plugin/program.rs b/src/meta_plugin/program.rs index cd1910d..d2a18d8 100644 --- a/src/meta_plugin/program.rs +++ b/src/meta_plugin/program.rs @@ -18,6 +18,7 @@ pub struct MetaPluginProgram { item_id: Option, result: Option, outputs: std::collections::HashMap, + options: std::collections::HashMap, } impl std::fmt::Debug for MetaPluginProgram { @@ -31,6 +32,7 @@ impl std::fmt::Debug for MetaPluginProgram { .field("process", &self.process) .field("writer", &"Box") .field("outputs", &self.outputs) + .field("options", &self.options) .finish() } } @@ -56,6 +58,14 @@ impl MetaPluginProgram { } } + // Start with default options + let mut final_options = std::collections::HashMap::new(); + if let Some(opts) = _options { + for (key, value) in opts { + final_options.insert(key, value); + } + } + MetaPluginProgram { program: program_path.map_or_else(|_| program.to_string(), |p| p.to_string_lossy().to_string()), args: args.iter().map(|s| s.to_string()).collect(), @@ -67,6 +77,7 @@ impl MetaPluginProgram { item_id: None, result: None, outputs: final_outputs, + options: final_options, } } @@ -187,4 +198,12 @@ impl MetaPlugin for MetaPluginProgram { fn default_options(&self) -> std::collections::HashMap { std::collections::HashMap::new() } + + fn options(&self) -> &std::collections::HashMap { + &self.options + } + + fn options_mut(&mut self) -> &mut std::collections::HashMap { + &mut self.options + } } diff --git a/src/meta_plugin/system.rs b/src/meta_plugin/system.rs index 83c9b76..0e56740 100644 --- a/src/meta_plugin/system.rs +++ b/src/meta_plugin/system.rs @@ -14,6 +14,7 @@ pub struct CwdMetaPlugin { meta_name: String, is_saved: bool, outputs: std::collections::HashMap, + options: std::collections::HashMap, } impl CwdMetaPlugin { @@ -37,6 +38,7 @@ impl CwdMetaPlugin { meta_name: "cwd".to_string(), is_saved: false, outputs: final_outputs, + options: final_options, } } @@ -89,6 +91,14 @@ impl MetaPlugin for CwdMetaPlugin { fn default_options(&self) -> std::collections::HashMap { std::collections::HashMap::new() } + + fn options(&self) -> &std::collections::HashMap { + &self.options + } + + fn options_mut(&mut self) -> &mut std::collections::HashMap { + &mut self.options + } } #[derive(Debug, Clone, Default)] @@ -96,6 +106,7 @@ pub struct UidMetaPlugin { meta_name: String, is_saved: bool, outputs: std::collections::HashMap, + options: std::collections::HashMap, } impl UidMetaPlugin { @@ -119,6 +130,7 @@ impl UidMetaPlugin { meta_name: "uid".to_string(), is_saved: false, outputs: final_outputs, + options: final_options, } } @@ -167,6 +179,14 @@ impl MetaPlugin for UidMetaPlugin { fn default_options(&self) -> std::collections::HashMap { std::collections::HashMap::new() } + + fn options(&self) -> &std::collections::HashMap { + &self.options + } + + fn options_mut(&mut self) -> &mut std::collections::HashMap { + &mut self.options + } } #[derive(Debug, Clone, Default)] @@ -174,6 +194,7 @@ pub struct UserMetaPlugin { meta_name: String, is_saved: bool, outputs: std::collections::HashMap, + options: std::collections::HashMap, } impl UserMetaPlugin { @@ -197,6 +218,7 @@ impl UserMetaPlugin { meta_name: "user".to_string(), is_saved: false, outputs: final_outputs, + options: final_options, } } @@ -248,6 +270,14 @@ impl MetaPlugin for UserMetaPlugin { fn default_options(&self) -> std::collections::HashMap { std::collections::HashMap::new() } + + fn options(&self) -> &std::collections::HashMap { + &self.options + } + + fn options_mut(&mut self) -> &mut std::collections::HashMap { + &mut self.options + } } #[derive(Debug, Clone, Default)] @@ -255,6 +285,7 @@ pub struct GidMetaPlugin { meta_name: String, is_saved: bool, outputs: std::collections::HashMap, + options: std::collections::HashMap, } impl GidMetaPlugin { @@ -278,6 +309,7 @@ impl GidMetaPlugin { meta_name: "gid".to_string(), is_saved: false, outputs: final_outputs, + options: final_options, } } @@ -326,6 +358,14 @@ impl MetaPlugin for GidMetaPlugin { fn default_options(&self) -> std::collections::HashMap { std::collections::HashMap::new() } + + fn options(&self) -> &std::collections::HashMap { + &self.options + } + + fn options_mut(&mut self) -> &mut std::collections::HashMap { + &mut self.options + } } #[derive(Debug, Clone, Default)] @@ -333,6 +373,7 @@ pub struct GroupMetaPlugin { meta_name: String, is_saved: bool, outputs: std::collections::HashMap, + options: std::collections::HashMap, } impl GroupMetaPlugin { @@ -356,6 +397,7 @@ impl GroupMetaPlugin { meta_name: "group".to_string(), is_saved: false, outputs: final_outputs, + options: final_options, } } @@ -407,6 +449,14 @@ impl MetaPlugin for GroupMetaPlugin { fn default_options(&self) -> std::collections::HashMap { std::collections::HashMap::new() } + + fn options(&self) -> &std::collections::HashMap { + &self.options + } + + fn options_mut(&mut self) -> &mut std::collections::HashMap { + &mut self.options + } } #[derive(Debug, Clone, Default)] @@ -414,6 +464,7 @@ pub struct ShellMetaPlugin { meta_name: String, is_saved: bool, outputs: std::collections::HashMap, + options: std::collections::HashMap, } impl ShellMetaPlugin { @@ -437,6 +488,7 @@ impl ShellMetaPlugin { meta_name: "shell".to_string(), is_saved: false, outputs: final_outputs, + options: final_options, } } @@ -488,6 +540,14 @@ impl MetaPlugin for ShellMetaPlugin { fn default_options(&self) -> std::collections::HashMap { std::collections::HashMap::new() } + + fn options(&self) -> &std::collections::HashMap { + &self.options + } + + fn options_mut(&mut self) -> &mut std::collections::HashMap { + &mut self.options + } } #[derive(Debug, Clone, Default)] @@ -495,6 +555,7 @@ pub struct ShellPidMetaPlugin { meta_name: String, is_saved: bool, outputs: std::collections::HashMap, + options: std::collections::HashMap, } impl ShellPidMetaPlugin { @@ -518,6 +579,7 @@ impl ShellPidMetaPlugin { meta_name: "shell_pid".to_string(), is_saved: false, outputs: final_outputs, + options: final_options, } } @@ -569,6 +631,14 @@ impl MetaPlugin for ShellPidMetaPlugin { fn default_options(&self) -> std::collections::HashMap { std::collections::HashMap::new() } + + fn options(&self) -> &std::collections::HashMap { + &self.options + } + + fn options_mut(&mut self) -> &mut std::collections::HashMap { + &mut self.options + } } #[derive(Debug, Clone, Default)] @@ -576,6 +646,7 @@ pub struct KeepPidMetaPlugin { meta_name: String, is_saved: bool, outputs: std::collections::HashMap, + options: std::collections::HashMap, } impl KeepPidMetaPlugin { @@ -599,6 +670,7 @@ impl KeepPidMetaPlugin { meta_name: "keep_pid".to_string(), is_saved: false, outputs: final_outputs, + options: final_options, } } @@ -647,6 +719,14 @@ impl MetaPlugin for KeepPidMetaPlugin { fn default_options(&self) -> std::collections::HashMap { std::collections::HashMap::new() } + + fn options(&self) -> &std::collections::HashMap { + &self.options + } + + fn options_mut(&mut self) -> &mut std::collections::HashMap { + &mut self.options + } } #[derive(Debug, Clone, Default)] @@ -654,6 +734,7 @@ pub struct HostnameMetaPlugin { meta_name: String, is_saved: bool, outputs: std::collections::HashMap, + options: std::collections::HashMap, } impl HostnameMetaPlugin { @@ -677,6 +758,7 @@ impl HostnameMetaPlugin { meta_name: "hostname".to_string(), is_saved: false, outputs: final_outputs, + options: final_options, } } @@ -728,6 +810,14 @@ impl MetaPlugin for HostnameMetaPlugin { fn default_options(&self) -> std::collections::HashMap { std::collections::HashMap::new() } + + fn options(&self) -> &std::collections::HashMap { + &self.options + } + + fn options_mut(&mut self) -> &mut std::collections::HashMap { + &mut self.options + } } #[derive(Debug, Clone, Default)] @@ -735,6 +825,7 @@ pub struct FullHostnameMetaPlugin { meta_name: String, is_saved: bool, outputs: std::collections::HashMap, + options: std::collections::HashMap, } impl FullHostnameMetaPlugin { @@ -758,6 +849,7 @@ impl FullHostnameMetaPlugin { meta_name: "full_hostname".to_string(), is_saved: false, outputs: final_outputs, + options: final_options, } } @@ -827,4 +919,12 @@ impl MetaPlugin for FullHostnameMetaPlugin { fn default_options(&self) -> std::collections::HashMap { std::collections::HashMap::new() } + + fn options(&self) -> &std::collections::HashMap { + &self.options + } + + fn options_mut(&mut self) -> &mut std::collections::HashMap { + &mut self.options + } }