Skip to main content

oxidite_plugin/
lib.rs

1//! Plugin system for Oxidite
2//!
3//! Provides dynamic loading and extension capabilities for Oxidite applications
4
5use serde::{Deserialize, Serialize};
6
7pub mod plugin;
8pub mod loader;
9pub mod manager;
10
11// Re-export types from plugin module but avoid conflicts
12pub use plugin::{Plugin, PluginInfo, PluginHook, HookResult};
13pub use loader::PluginLoader;
14pub use manager::PluginManager;
15
16/// Plugin configuration
17#[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
34/// Helper function to create a plugin manager
35pub fn create_manager(config: PluginConfig) -> PluginManager {
36    PluginManager::new(config)
37}