Skip to main content

folk_plugin_process/
lib.rs

1pub mod config;
2pub mod plugin;
3pub mod supervisor;
4
5use anyhow::Result;
6use folk_api::{Plugin, PluginFactory, ServerPluginWrapper};
7use serde_json::Value;
8
9pub use config::ProcessConfig;
10pub use plugin::ProcessPlugin;
11
12struct ProcessPluginFactory;
13
14impl PluginFactory for ProcessPluginFactory {
15    fn create(&self, config: Value) -> Result<Box<dyn Plugin>> {
16        let config: ProcessConfig = serde_json::from_value(config).unwrap_or_default();
17        Ok(Box::new(ServerPluginWrapper::new(ProcessPlugin::new(
18            config,
19        ))))
20    }
21}
22
23pub fn folk_plugin_factory() -> Box<dyn PluginFactory> {
24    Box::new(ProcessPluginFactory)
25}