refactor: simplify filter plugin interface to use &mut dyn Read/Write
This commit is contained in:
committed by
Andrew Phillips (aider)
parent
a8871a9575
commit
a72395fe83
@@ -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);
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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))
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user