refactor(plugin_system): 统一插件卸载逻辑到注册中心
将 `PluginManager.unload_plugin` 中的卸载逻辑移至 `component_registry`。现在 `PluginManager` 直接调用 `component_registry.unregister_plugin` 来处理所有组件和插件的注销,简化了插件管理器的职责,使卸载过程更加集中和一致。
This commit is contained in:
@@ -174,13 +174,11 @@ class PluginManager:
|
|||||||
if plugin_name not in self.loaded_plugins:
|
if plugin_name not in self.loaded_plugins:
|
||||||
logger.warning(f"插件 {plugin_name} 未加载")
|
logger.warning(f"插件 {plugin_name} 未加载")
|
||||||
return False
|
return False
|
||||||
plugin_instance = self.loaded_plugins[plugin_name]
|
# 调用 component_registry 中统一的卸载方法
|
||||||
plugin_info = plugin_instance.plugin_info
|
success = await component_registry.unregister_plugin(plugin_name)
|
||||||
success = True
|
if success:
|
||||||
for component in plugin_info.components:
|
# 从已加载插件中移除
|
||||||
success &= await component_registry.remove_component(component.name, component.component_type, plugin_name)
|
del self.loaded_plugins[plugin_name]
|
||||||
success &= component_registry.remove_plugin_registry(plugin_name)
|
|
||||||
del self.loaded_plugins[plugin_name]
|
|
||||||
return success
|
return success
|
||||||
|
|
||||||
async def reload_registered_plugin(self, plugin_name: str) -> bool:
|
async def reload_registered_plugin(self, plugin_name: str) -> bool:
|
||||||
|
|||||||
Reference in New Issue
Block a user