mirror of
https://gitcode.com/JianFeeeee/HomeAgent.git
synced 2026-09-22 18:08:04 +00:00
插件卸载清配置:删除配置项定义与插件配置表
- ConfigRegistry.RemovePlugin(name):删除 defs 中 plugin.<name>.* 配置项定义 (该插件 RegisterDef 注册的全部配置项)+ DROP 插件配置表 config_<name> (含用户设置值);ListPlugins 基于 config_% 表枚举,卸载后插件配置区 在 WebUI/Settings API 中完全消失 - Registry.RemovePlugin 在 RemoveDisabledPlugin 基础上追加 RemovePlugin 调用; 语义与 onRemove 回调(清数据文件)互补:删除 = 数据文件 + 配置 + 注册全清, disable/重载不清配置
This commit is contained in:
@ -74,6 +74,24 @@ func (r *ConfigRegistry) RemoveDisabledPlugin(name string) error {
|
||||
return err
|
||||
}
|
||||
|
||||
// RemovePlugin 卸载插件时清理其全部配置痕迹:删除配置项定义
|
||||
// (defs 中 plugin.<name>.*,即该插件 RegisterDef 注册的配置项)并删除
|
||||
// 插件配置表(config_<name>,含用户设置值)。卸载后该插件配置区完全消失;
|
||||
// 与插件自身的 onRemove 回调(清理数据文件)配合完成删除清理。
|
||||
func (r *ConfigRegistry) RemovePlugin(name string) error {
|
||||
r.mu.Lock()
|
||||
defer r.mu.Unlock()
|
||||
prefix := "plugin." + name + "."
|
||||
for k := range r.defs {
|
||||
if strings.HasPrefix(k, prefix) {
|
||||
delete(r.defs, k)
|
||||
}
|
||||
}
|
||||
table := r.pluginTableName(name)
|
||||
_, err := r.db.Exec(fmt.Sprintf(`DROP TABLE IF EXISTS %s`, table))
|
||||
return err
|
||||
}
|
||||
|
||||
type DisabledPluginInfo struct {
|
||||
Name string `json:"name"`
|
||||
DisabledAt string `json:"disabled_at"`
|
||||
|
||||
@ -615,6 +615,7 @@ func (r *Registry) RemovePlugin(name string) error {
|
||||
}
|
||||
if r.cfgReg != nil {
|
||||
r.cfgReg.RemoveDisabledPlugin(name)
|
||||
r.cfgReg.RemovePlugin(name)
|
||||
}
|
||||
log.Printf("[plugin] removed: %s", name)
|
||||
return nil
|
||||
|
||||
Reference in New Issue
Block a user