1use serde::{Deserialize, Serialize};
6
7pub mod plugin;
8pub mod loader;
9pub mod manager;
10
11pub use plugin::{Plugin, PluginInfo, PluginHook, HookResult};
13pub use loader::PluginLoader;
14pub use manager::PluginManager;
15
16#[derive(Debug, Clone, Serialize, Deserialize)]
18pub struct PluginConfig {
19 pub enabled_plugins: Vec<String>,
20 pub plugin_directory: String,
21 pub auto_reload: bool,
22}
23
24impl Default for PluginConfig {
25 fn default() -> Self {
26 Self {
27 enabled_plugins: Vec::new(),
28 plugin_directory: "./plugins".to_string(),
29 auto_reload: false,
30 }
31 }
32}
33
34pub fn create_manager(config: PluginConfig) -> PluginManager {
36 PluginManager::new(config)
37}