refactor: simplify filter plugin interface to use &mut dyn Read/Write

This commit is contained in:
Andrew Phillips
2025-09-15 17:42:35 -03:00
committed by Andrew Phillips (aider)
parent a8871a9575
commit a72395fe83
17 changed files with 102 additions and 138 deletions

View File

@@ -127,7 +127,7 @@ impl MetaPluginExec {
.stderr(Stdio::piped());
match cmd.spawn() {
Ok(child) => {
Ok(mut child) => {
let stdin = child.stdin.take().unwrap();
self.writer = Some(Box::new(stdin));
self.process = Some(child);

View File

@@ -26,7 +26,7 @@ impl KeepPidMetaPlugin {
// Set default outputs
let default_outputs = &["keep_pid"];
base.initialize_plugin(default_outputs, _options, outputs);
base.initialize_plugin(default_outputs, &_options, &outputs);
KeepPidMetaPlugin {
is_finalized: false,

View File

@@ -4,13 +4,14 @@ use magic::{Cookie, CookieFlags};
use std::process::{Command, Stdio};
use std::io::{self, Write};
use std::path::Path;
use log::debug;
use crate::meta_plugin::{MetaPlugin, MetaPluginType, BaseMetaPlugin, MetaPluginResponse, MetaData, process_metadata_outputs};
#[cfg(feature = "magic")]
#[derive(Debug)]
pub struct MagicFileMetaPlugin {
pub struct MagicFileMetaPluginImpl {
buffer: Vec<u8>,
max_buffer_size: usize,
is_finalized: bool,
@@ -19,11 +20,11 @@ pub struct MagicFileMetaPlugin {
}
#[cfg(feature = "magic")]
impl MagicFileMetaPlugin {
impl MagicFileMetaPluginImpl {
pub fn new(
options: Option<std::collections::HashMap<String, serde_yaml::Value>>,
outputs: Option<std::collections::HashMap<String, serde_yaml::Value>>,
) -> MagicFileMetaPlugin {
) -> MagicFileMetaPluginImpl {
let mut base = BaseMetaPlugin::new();
// Set default outputs
@@ -36,7 +37,7 @@ impl MagicFileMetaPlugin {
.and_then(|v| v.as_u64())
.unwrap_or(crate::common::PIPESIZE as u64) as usize;
MagicFileMetaPlugin {
MagicFileMetaPluginImpl {
buffer: Vec::new(),
max_buffer_size,
is_finalized: false,
@@ -68,7 +69,7 @@ impl MagicFileMetaPlugin {
let types_to_process = [
("mime_type", CookieFlags::MIME_TYPE),
("mime_encoding", CookieFlags::MIME_ENCODING),
("file_type", CookieFlags::NONE),
("file_type", CookieFlags::empty()),
];
for (name, flags) in types_to_process.iter() {
@@ -90,7 +91,7 @@ impl MagicFileMetaPlugin {
}
#[cfg(feature = "magic")]
impl MetaPlugin for MagicFileMetaPlugin {
impl MetaPlugin for MagicFileMetaPluginImpl {
fn is_finalized(&self) -> bool {
self.is_finalized
}
@@ -111,7 +112,7 @@ impl MetaPlugin for MagicFileMetaPlugin {
}
};
if let Err(e) = cookie.load(&[]) {
if let Err(e) = cookie.load(&[] as &[&Path]) {
debug!("META: MagicFile plugin: failed to load magic database: {}", e);
return MetaPluginResponse {
metadata: Vec::new(),
@@ -404,12 +405,10 @@ impl MetaPlugin for FallbackMagicFileMetaPlugin {
}
#[cfg(feature = "magic")]
use MagicFileMetaPlugin as MagicFileMetaPluginImpl;
pub use MagicFileMetaPluginImpl as MagicFileMetaPlugin;
#[cfg(not(feature = "magic"))]
use FallbackMagicFileMetaPlugin as MagicFileMetaPluginImpl;
pub use MagicFileMetaPluginImpl as MagicFileMetaPlugin;
pub use FallbackMagicFileMetaPlugin as MagicFileMetaPlugin;
use crate::meta_plugin::register_meta_plugin;
@@ -419,3 +418,4 @@ fn register_magic_file_plugin() {
Box::new(MagicFileMetaPlugin::new(options, outputs))
});
}

View File

@@ -51,7 +51,7 @@ impl ReadRateMetaPlugin {
// Set default outputs
let default_outputs = &["read_rate"];
base.initialize_plugin(default_outputs, _options, outputs);
base.initialize_plugin(default_outputs, &_options, &outputs);
ReadRateMetaPlugin {
start_time: None,

View File

@@ -18,7 +18,7 @@ impl ReadTimeMetaPlugin {
// Set default outputs
let default_outputs = &["read_time"];
base.initialize_plugin(default_outputs, _options, outputs);
base.initialize_plugin(default_outputs, &_options, &outputs);
ReadTimeMetaPlugin {
start_time: None,

View File

@@ -41,7 +41,7 @@ impl ShellMetaPlugin {
// Set default outputs
let default_outputs = &["shell"];
base.initialize_plugin(default_outputs, _options, outputs);
base.initialize_plugin(default_outputs, &_options, &outputs);
ShellMetaPlugin {
is_finalized: false,

View File

@@ -17,7 +17,7 @@ impl ShellPidMetaPlugin {
// Set default outputs
let default_outputs = &["shell_pid"];
base.initialize_plugin(default_outputs, options, outputs);
base.initialize_plugin(default_outputs, &options, &outputs);
ShellPidMetaPlugin {
is_finalized: false,

View File

@@ -43,8 +43,8 @@ impl TextMetaPlugin {
base.initialize_plugin(
&["text", "text_word_count", "text_line_count",
"text_line_max_len", "text_line_mean_len", "text_line_median_len"],
options,
outputs,
&options,
&outputs,
);
// Set disabled outputs to null based on options

View File

@@ -29,8 +29,8 @@ impl UserMetaPlugin {
// Initialize with helper function
base.initialize_plugin(
&["user_uid", "user_gid", "user_name", "user_group"],
options,
outputs,
&options,
&outputs,
);
UserMetaPlugin {