package app import ( "sort" "github.com/shadow1ng/fscan/common" "github.com/shadow1ng/fscan/plugins/base" ) // Initializer 初始化器接口 type Initializer interface { Initialize() error Name() string } // PluginInitializer 插件初始化器 type PluginInitializer struct{} func (p *PluginInitializer) Name() string { return "PluginInitializer" } func (p *PluginInitializer) Initialize() error { var localPlugins []string // 获取所有注册的插件 allPlugins := base.GlobalPluginRegistry.GetAll() for _, pluginName := range allPlugins { metadata := base.GlobalPluginRegistry.GetMetadata(pluginName) if metadata != nil && metadata.Category == "local" { localPlugins = append(localPlugins, pluginName) } } // 排序以保持一致性 sort.Strings(localPlugins) // 设置全局变量 common.LocalPluginsList = localPlugins return nil } // LoggerInitializer 日志初始化器 type LoggerInitializer struct{} func (l *LoggerInitializer) Name() string { return "LoggerInitializer" } func (l *LoggerInitializer) Initialize() error { common.InitLogger() return nil } // OutputInitializer 输出初始化器 type OutputInitializer struct{} func (o *OutputInitializer) Name() string { return "OutputInitializer" } func (o *OutputInitializer) Initialize() error { return common.InitOutput() }