pub mod notification;
pub mod cache_plugin;
pub mod async_task;
pub mod scheduler;
pub mod sid_plugin;
use alun_core::PluginManager;
use alun_config::AppConfig;
use tracing::info;
pub fn create_plugins_from_config(config: &AppConfig) -> PluginManager {
let mut mgr = PluginManager::new();
let plugins_cfg = &config.plugins;
for name in &plugins_cfg.enabled {
match name.as_str() {
"notification" => {
let p = notification::NotificationPlugin::from_config(
&plugins_cfg.notification,
);
mgr = mgr.add(p);
info!("插件: notification 已注册");
}
"async-task" => {
let p = async_task::AsyncTaskPlugin::new(
plugins_cfg.async_task.workers,
);
mgr = mgr.add(p);
info!("插件: async-task 已注册");
}
"scheduler" => {
let p = scheduler::SchedulerPlugin::new();
mgr = mgr.add(p);
info!("插件: scheduler 已注册");
}
"cache" => {
let p = cache_plugin::CachePlugin::new(&config.cache, &config.redis);
mgr = mgr.add(p);
info!("插件: cache 已注册");
}
"sid" => {
let p = sid_plugin::SidPlugin::new();
mgr = mgr.add(p);
info!("插件: sid 已注册");
}
_ => {
tracing::warn!("未知插件: {},跳过", name);
}
}
}
mgr
}