添加插件管理功能,显示插件的相关信息。
This commit is contained in:
@@ -132,10 +132,18 @@ class PluginManager:
|
||||
try:
|
||||
# 检查是否已有同名模块的插件加载
|
||||
for name, plugin in self.plugins.items():
|
||||
module_name = plugin.__class__.__module__.split('.')[-2]
|
||||
if module_name == plugin_name:
|
||||
self.LOG.info(f"PluginManager:插件模块 {plugin_name} 已加载为 {name}")
|
||||
return plugin
|
||||
try:
|
||||
module_name = plugin.__class__.__module__.split('.')[-2]
|
||||
if module_name == plugin_name:
|
||||
self.LOG.info(f"PluginManager:插件模块 {plugin_name} 已加载为 {name}")
|
||||
# 确保模块名到插件名的映射存在
|
||||
if module_name not in self.module_to_plugin:
|
||||
self.module_to_plugin[module_name] = name
|
||||
self.LOG.info(f"PluginManager:添加缺失的模块映射 {module_name} -> {name}")
|
||||
return plugin
|
||||
except (IndexError, AttributeError) as e:
|
||||
self.LOG.warning(f"获取插件 {name} 的模块名时出错: {e}")
|
||||
continue
|
||||
|
||||
# 如果插件已加载,直接返回
|
||||
if plugin_name in self.plugins:
|
||||
@@ -199,6 +207,10 @@ class PluginManager:
|
||||
|
||||
# 存储插件实例
|
||||
self.plugins[plugin.name] = plugin
|
||||
|
||||
# 添加模块名到插件名的映射
|
||||
self.module_to_plugin[plugin_name] = plugin.name
|
||||
self.LOG.info(f"PluginManager:添加模块映射 {plugin_name} -> {plugin.name}")
|
||||
|
||||
# 发布插件加载事件
|
||||
EventSystem().publish(EventType.PLUGIN_LOADED, {"plugin": plugin})
|
||||
@@ -230,7 +242,6 @@ class PluginManager:
|
||||
# 注册插件
|
||||
PluginRegistry().register(plugin)
|
||||
|
||||
# 在 load_plugin 方法中,修改存储插件实例的部分
|
||||
# 存储插件实例
|
||||
self.plugins[plugin.name] = plugin
|
||||
|
||||
@@ -238,8 +249,12 @@ class PluginManager:
|
||||
try:
|
||||
module_name = plugin.__class__.__module__.split('.')[-2]
|
||||
self.module_to_plugin[module_name] = plugin.name
|
||||
except (IndexError, AttributeError):
|
||||
self.LOG.warning(f"无法为插件 {plugin.name} 获取有效的模块名")
|
||||
self.LOG.info(f"PluginManager:添加模块映射 {module_name} -> {plugin.name}")
|
||||
except (IndexError, AttributeError) as e:
|
||||
self.LOG.warning(f"无法为插件 {plugin.name} 获取有效的模块名: {e}")
|
||||
# 使用传入的插件名作为备选
|
||||
self.module_to_plugin[plugin_name] = plugin.name
|
||||
self.LOG.info(f"PluginManager:使用备选模块映射 {plugin_name} -> {plugin.name}")
|
||||
|
||||
# 发布插件加载事件
|
||||
EventSystem().publish(EventType.PLUGIN_LOADED, {"plugin": plugin})
|
||||
@@ -459,8 +474,34 @@ class PluginManager:
|
||||
try:
|
||||
module_name = plugin.__class__.__module__.split('.')[-2]
|
||||
if module_name == plugin_name:
|
||||
# 顺便更新映射
|
||||
if module_name not in self.module_to_plugin:
|
||||
self.module_to_plugin[module_name] = name
|
||||
self.LOG.info(f"PluginManager:添加缺失的模块映射 {module_name} -> {name}")
|
||||
return name, plugin
|
||||
|
||||
# 不区分大小写比较
|
||||
if module_name.lower() == plugin_name.lower():
|
||||
if module_name not in self.module_to_plugin:
|
||||
self.module_to_plugin[module_name] = name
|
||||
return name, plugin
|
||||
|
||||
# 检查插件名是否包含在模块名中(不区分大小写)
|
||||
if plugin_name.lower() in module_name.lower():
|
||||
return name, plugin
|
||||
|
||||
# 检查模块名是否包含在插件名中(不区分大小写)
|
||||
if module_name.lower() in plugin_name.lower():
|
||||
return name, plugin
|
||||
|
||||
# 检查插件名是否包含在显示名称中(不区分大小写)
|
||||
if plugin_name.lower() in name.lower():
|
||||
return name, plugin
|
||||
except (IndexError, AttributeError):
|
||||
continue
|
||||
|
||||
# 记录未找到插件的详细信息,帮助调试
|
||||
self.LOG.warning(f"未找到插件: {plugin_name},当前已加载插件: {list(self.plugins.keys())}")
|
||||
self.LOG.warning(f"模块映射: {self.module_to_plugin}")
|
||||
|
||||
return None, None
|
||||
|
||||
Reference in New Issue
Block a user