feat: update meta plugin constructors to accept options and outputs

Co-authored-by: aider (openai/andrew/openrouter/qwen/qwen3-coder) <aider@aider.chat>
This commit is contained in:
Andrew Phillips
2025-08-19 13:56:33 -03:00
parent b4d40f01e8
commit 81397c1319
6 changed files with 399 additions and 55 deletions

View File

@@ -17,13 +17,33 @@ pub struct CwdMetaPlugin {
}
impl CwdMetaPlugin {
pub fn new() -> CwdMetaPlugin {
pub fn new(
_options: Option<std::collections::HashMap<String, serde_yaml::Value>>,
outputs: Option<std::collections::HashMap<String, serde_yaml::Value>>,
) -> CwdMetaPlugin {
// Start with default outputs
let mut final_outputs = std::collections::HashMap::new();
let default_outputs = Self::default_outputs();
for output_name in default_outputs {
final_outputs.insert(output_name.clone(), serde_yaml::Value::String(output_name));
}
if let Some(outs) = outputs {
for (key, value) in outs {
final_outputs.insert(key, value);
}
}
CwdMetaPlugin {
meta_name: "cwd".to_string(),
is_saved: false,
outputs: std::collections::HashMap::new(),
outputs: final_outputs,
}
}
pub fn new_simple() -> CwdMetaPlugin {
Self::new(None, None)
}
}
}
impl MetaPlugin for CwdMetaPlugin {
@@ -80,13 +100,33 @@ pub struct UidMetaPlugin {
}
impl UidMetaPlugin {
pub fn new() -> UidMetaPlugin {
pub fn new(
_options: Option<std::collections::HashMap<String, serde_yaml::Value>>,
outputs: Option<std::collections::HashMap<String, serde_yaml::Value>>,
) -> UidMetaPlugin {
// Start with default outputs
let mut final_outputs = std::collections::HashMap::new();
let default_outputs = Self::default_outputs();
for output_name in default_outputs {
final_outputs.insert(output_name.clone(), serde_yaml::Value::String(output_name));
}
if let Some(outs) = outputs {
for (key, value) in outs {
final_outputs.insert(key, value);
}
}
UidMetaPlugin {
meta_name: "uid".to_string(),
is_saved: false,
outputs: std::collections::HashMap::new(),
outputs: final_outputs,
}
}
pub fn new_simple() -> UidMetaPlugin {
Self::new(None, None)
}
}
}
impl MetaPlugin for UidMetaPlugin {
@@ -139,13 +179,33 @@ pub struct UserMetaPlugin {
}
impl UserMetaPlugin {
pub fn new() -> UserMetaPlugin {
pub fn new(
_options: Option<std::collections::HashMap<String, serde_yaml::Value>>,
outputs: Option<std::collections::HashMap<String, serde_yaml::Value>>,
) -> UserMetaPlugin {
// Start with default outputs
let mut final_outputs = std::collections::HashMap::new();
let default_outputs = Self::default_outputs();
for output_name in default_outputs {
final_outputs.insert(output_name.clone(), serde_yaml::Value::String(output_name));
}
if let Some(outs) = outputs {
for (key, value) in outs {
final_outputs.insert(key, value);
}
}
UserMetaPlugin {
meta_name: "user".to_string(),
is_saved: false,
outputs: std::collections::HashMap::new(),
outputs: final_outputs,
}
}
pub fn new_simple() -> UserMetaPlugin {
Self::new(None, None)
}
}
}
impl MetaPlugin for UserMetaPlugin {
@@ -201,13 +261,33 @@ pub struct GidMetaPlugin {
}
impl GidMetaPlugin {
pub fn new() -> GidMetaPlugin {
pub fn new(
_options: Option<std::collections::HashMap<String, serde_yaml::Value>>,
outputs: Option<std::collections::HashMap<String, serde_yaml::Value>>,
) -> GidMetaPlugin {
// Start with default outputs
let mut final_outputs = std::collections::HashMap::new();
let default_outputs = Self::default_outputs();
for output_name in default_outputs {
final_outputs.insert(output_name.clone(), serde_yaml::Value::String(output_name));
}
if let Some(outs) = outputs {
for (key, value) in outs {
final_outputs.insert(key, value);
}
}
GidMetaPlugin {
meta_name: "gid".to_string(),
is_saved: false,
outputs: std::collections::HashMap::new(),
outputs: final_outputs,
}
}
pub fn new_simple() -> GidMetaPlugin {
Self::new(None, None)
}
}
}
impl MetaPlugin for GidMetaPlugin {
@@ -260,13 +340,33 @@ pub struct GroupMetaPlugin {
}
impl GroupMetaPlugin {
pub fn new() -> GroupMetaPlugin {
pub fn new(
_options: Option<std::collections::HashMap<String, serde_yaml::Value>>,
outputs: Option<std::collections::HashMap<String, serde_yaml::Value>>,
) -> GroupMetaPlugin {
// Start with default outputs
let mut final_outputs = std::collections::HashMap::new();
let default_outputs = Self::default_outputs();
for output_name in default_outputs {
final_outputs.insert(output_name.clone(), serde_yaml::Value::String(output_name));
}
if let Some(outs) = outputs {
for (key, value) in outs {
final_outputs.insert(key, value);
}
}
GroupMetaPlugin {
meta_name: "group".to_string(),
is_saved: false,
outputs: std::collections::HashMap::new(),
outputs: final_outputs,
}
}
pub fn new_simple() -> GroupMetaPlugin {
Self::new(None, None)
}
}
}
impl MetaPlugin for GroupMetaPlugin {
@@ -322,13 +422,33 @@ pub struct ShellMetaPlugin {
}
impl ShellMetaPlugin {
pub fn new() -> ShellMetaPlugin {
pub fn new(
_options: Option<std::collections::HashMap<String, serde_yaml::Value>>,
outputs: Option<std::collections::HashMap<String, serde_yaml::Value>>,
) -> ShellMetaPlugin {
// Start with default outputs
let mut final_outputs = std::collections::HashMap::new();
let default_outputs = Self::default_outputs();
for output_name in default_outputs {
final_outputs.insert(output_name.clone(), serde_yaml::Value::String(output_name));
}
if let Some(outs) = outputs {
for (key, value) in outs {
final_outputs.insert(key, value);
}
}
ShellMetaPlugin {
meta_name: "shell".to_string(),
is_saved: false,
outputs: std::collections::HashMap::new(),
outputs: final_outputs,
}
}
pub fn new_simple() -> ShellMetaPlugin {
Self::new(None, None)
}
}
}
impl MetaPlugin for ShellMetaPlugin {
@@ -384,13 +504,33 @@ pub struct ShellPidMetaPlugin {
}
impl ShellPidMetaPlugin {
pub fn new() -> ShellPidMetaPlugin {
pub fn new(
_options: Option<std::collections::HashMap<String, serde_yaml::Value>>,
outputs: Option<std::collections::HashMap<String, serde_yaml::Value>>,
) -> ShellPidMetaPlugin {
// Start with default outputs
let mut final_outputs = std::collections::HashMap::new();
let default_outputs = Self::default_outputs();
for output_name in default_outputs {
final_outputs.insert(output_name.clone(), serde_yaml::Value::String(output_name));
}
if let Some(outs) = outputs {
for (key, value) in outs {
final_outputs.insert(key, value);
}
}
ShellPidMetaPlugin {
meta_name: "shell_pid".to_string(),
is_saved: false,
outputs: std::collections::HashMap::new(),
outputs: final_outputs,
}
}
pub fn new_simple() -> ShellPidMetaPlugin {
Self::new(None, None)
}
}
}
impl MetaPlugin for ShellPidMetaPlugin {
@@ -446,13 +586,33 @@ pub struct KeepPidMetaPlugin {
}
impl KeepPidMetaPlugin {
pub fn new() -> KeepPidMetaPlugin {
pub fn new(
_options: Option<std::collections::HashMap<String, serde_yaml::Value>>,
outputs: Option<std::collections::HashMap<String, serde_yaml::Value>>,
) -> KeepPidMetaPlugin {
// Start with default outputs
let mut final_outputs = std::collections::HashMap::new();
let default_outputs = Self::default_outputs();
for output_name in default_outputs {
final_outputs.insert(output_name.clone(), serde_yaml::Value::String(output_name));
}
if let Some(outs) = outputs {
for (key, value) in outs {
final_outputs.insert(key, value);
}
}
KeepPidMetaPlugin {
meta_name: "keep_pid".to_string(),
is_saved: false,
outputs: std::collections::HashMap::new(),
outputs: final_outputs,
}
}
pub fn new_simple() -> KeepPidMetaPlugin {
Self::new(None, None)
}
}
}
impl MetaPlugin for KeepPidMetaPlugin {
@@ -505,13 +665,33 @@ pub struct HostnameMetaPlugin {
}
impl HostnameMetaPlugin {
pub fn new() -> HostnameMetaPlugin {
pub fn new(
_options: Option<std::collections::HashMap<String, serde_yaml::Value>>,
outputs: Option<std::collections::HashMap<String, serde_yaml::Value>>,
) -> HostnameMetaPlugin {
// Start with default outputs
let mut final_outputs = std::collections::HashMap::new();
let default_outputs = Self::default_outputs();
for output_name in default_outputs {
final_outputs.insert(output_name.clone(), serde_yaml::Value::String(output_name));
}
if let Some(outs) = outputs {
for (key, value) in outs {
final_outputs.insert(key, value);
}
}
HostnameMetaPlugin {
meta_name: "hostname".to_string(),
is_saved: false,
outputs: std::collections::HashMap::new(),
outputs: final_outputs,
}
}
pub fn new_simple() -> HostnameMetaPlugin {
Self::new(None, None)
}
}
}
impl MetaPlugin for HostnameMetaPlugin {
@@ -567,13 +747,33 @@ pub struct FullHostnameMetaPlugin {
}
impl FullHostnameMetaPlugin {
pub fn new() -> FullHostnameMetaPlugin {
pub fn new(
_options: Option<std::collections::HashMap<String, serde_yaml::Value>>,
outputs: Option<std::collections::HashMap<String, serde_yaml::Value>>,
) -> FullHostnameMetaPlugin {
// Start with default outputs
let mut final_outputs = std::collections::HashMap::new();
let default_outputs = Self::default_outputs();
for output_name in default_outputs {
final_outputs.insert(output_name.clone(), serde_yaml::Value::String(output_name));
}
if let Some(outs) = outputs {
for (key, value) in outs {
final_outputs.insert(key, value);
}
}
FullHostnameMetaPlugin {
meta_name: "full_hostname".to_string(),
is_saved: false,
outputs: std::collections::HashMap::new(),
outputs: final_outputs,
}
}
pub fn new_simple() -> FullHostnameMetaPlugin {
Self::new(None, None)
}
}
}
impl MetaPlugin for FullHostnameMetaPlugin {