环境变量指定启用插件列表

This commit is contained in:
www.xueximeng.com
2025-08-21 10:32:43 +08:00
parent a8b2183794
commit 2bbc683273
4 changed files with 78 additions and 16 deletions

43
main.go
View File

@@ -10,6 +10,7 @@ import (
"os/signal"
"runtime"
"sort"
"strings"
"syscall"
"time"
@@ -104,8 +105,10 @@ func startServer() {
// 初始化插件管理器
pluginManager := plugin.NewPluginManager()
// 注册所有全局插件(通过init函数自动注册到全局注册表
pluginManager.RegisterAllGlobalPlugins()
// 注册全局插件(根据配置过滤
if config.AppConfig.AsyncPluginEnabled {
pluginManager.RegisterGlobalPluginsWithFilter(config.AppConfig.EnabledPlugins)
}
// 更新默认并发数如果插件被禁用则使用0
pluginCount := 0
@@ -303,21 +306,33 @@ func printServiceInfo(port string, pluginManager *plugin.PluginManager) {
// 只有当插件功能启用时才输出插件信息
if config.AppConfig.AsyncPluginEnabled {
// 输出插件信息(按优先级排序)
fmt.Println("已加载插件:")
plugins := pluginManager.GetPlugins()
// 按优先级排序(优先级数字越小越靠前)
sort.Slice(plugins, func(i, j int) bool {
// 优先级相同时按名称排序
if plugins[i].Priority() == plugins[j].Priority() {
return plugins[i].Name() < plugins[j].Name()
if len(plugins) > 0 {
// 显示是否有特定的插件过滤
if len(config.AppConfig.EnabledPlugins) > 0 {
fmt.Printf("已启用指定插件 (%d个):\n", len(plugins))
} else {
fmt.Printf("已加载所有插件 (%d个):\n", len(plugins))
}
return plugins[i].Priority() < plugins[j].Priority()
})
for _, p := range plugins {
fmt.Printf(" - %s (优先级: %d)\n", p.Name(), p.Priority())
// 按优先级排序(优先级数字越小越靠前)
sort.Slice(plugins, func(i, j int) bool {
// 优先级相同时按名称排序
if plugins[i].Priority() == plugins[j].Priority() {
return plugins[i].Name() < plugins[j].Name()
}
return plugins[i].Priority() < plugins[j].Priority()
})
for _, p := range plugins {
fmt.Printf(" - %s (优先级: %d)\n", p.Name(), p.Priority())
}
} else {
if len(config.AppConfig.EnabledPlugins) > 0 {
fmt.Printf("未找到指定的插件: %s\n", strings.Join(config.AppConfig.EnabledPlugins, ", "))
} else {
fmt.Println("未加载到任何插件")
}
}
}
}