Load plugin if and only if it hasn't been registered.

This commit is contained in:
Andrés N. Robalino 2019-09-23 17:01:40 -05:00
parent 7d41ac54b5
commit 95ea3fcf4e

View file

@ -72,21 +72,23 @@ fn load_plugin(path: &std::path::Path, context: &mut Context) -> Result<(), Shel
trace!("processing {:?}", params);
if params.is_filter {
let fname = fname.to_string();
let name = params.name.clone();
context.add_commands(vec![whole_stream_command(PluginCommand::new(
name, fname, params,
))]);
Ok(())
let fname = fname.to_string();
if context.has_command(&name) {
trace!("plugin {:?} already loaded.", &name);
} else {
if params.is_filter {
context.add_commands(vec![whole_stream_command(
PluginCommand::new(name, fname, params),
)]);
} else {
let fname = fname.to_string();
let name = params.name.clone();
context.add_commands(vec![whole_stream_command(PluginSink::new(
name, fname, params,
))]);
Ok(())
};
}
Ok(())
}
Err(e) => Err(e),
},