oxidite_plugin/
lib.rs

1//! Plugin system for Oxidite
2//!
3//! Provides dynamic loading and extension capabilities for Oxidite applications
4
5use std::collections::HashMap;
6use std::path::Path;
7use std::sync::Arc;
8use async_trait::async_trait;
9use serde::{Deserialize, Serialize};
10use oxidite_core::{Router, Result, Error};
11use oxidite_config::Config;
12
13pub mod plugin;
14pub mod loader;
15pub mod manager;
16
17// Re-export types from plugin module but avoid conflicts
18pub use plugin::{Plugin, PluginInfo, PluginHook, HookResult};
19pub use loader::PluginLoader;
20pub use manager::PluginManager;
21
22/// Plugin configuration
23#[derive(Debug, Clone, Serialize, Deserialize)]
24pub struct PluginConfig {
25    pub enabled_plugins: Vec<String>,
26    pub plugin_directory: String,
27    pub auto_reload: bool,
28}
29
30impl Default for PluginConfig {
31    fn default() -> Self {
32        Self {
33            enabled_plugins: Vec::new(),
34            plugin_directory: "./plugins".to_string(),
35            auto_reload: false,
36        }
37    }
38}
39
40/// Helper function to create a plugin manager
41pub fn create_manager(config: PluginConfig) -> PluginManager {
42    PluginManager::new(config)
43}