use serde::{Deserialize, Serialize};
pub mod plugin;
pub mod loader;
pub mod manager;
pub use plugin::{Plugin, PluginInfo, PluginHook, HookResult};
pub use loader::PluginLoader;
pub use manager::PluginManager;
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct PluginConfig {
pub enabled_plugins: Vec<String>,
pub plugin_directory: String,
pub auto_reload: bool,
}
impl Default for PluginConfig {
fn default() -> Self {
Self {
enabled_plugins: Vec::new(),
plugin_directory: "./plugins".to_string(),
auto_reload: false,
}
}
}
pub fn create_manager(config: PluginConfig) -> PluginManager {
PluginManager::new(config)
}