mirror of
https://gitcode.com/JianFeeeee/HomeAgent.git
synced 2026-10-04 00:03:59 +00:00
插件删除回调:onRemove 生命周期(仅卸载触发,重载不触发)
- 公共 SDK(third_party/homeagent-sdk):RegisterOnRemoveHandler/RunOnRemoveHandlers (后注册先执行、幂等);内部 SDK PluginManager 接口新增 RemovePlugin - registry.RemovePlugin:runStopHandlers → Stop → 清理 plugins/sdkRefs/instances → runOnRemoveHandlers → toolCleaner.UnregisterPluginTools → cfgReg.RemoveDisabledPlugin - pluginmgr.removePlugin 先调 Registry.RemovePlugin 再删目录 - 配置清理:PluginSettings.Remove(key)(内部 SettingsAPI + settingsImpl) - 演示:timer 插件 onRemove 删 max_duration 键;plugindev 模板同步 onRemove 示例; SDK example/calendar cleanupData 删 events.json;manager plugins/uninstall 先停通道
This commit is contained in:
@ -69,6 +69,9 @@ type PluginManager interface {
|
||||
IsPluginDisabled(name string) bool
|
||||
DisablePlugin(name, by string) error
|
||||
EnablePlugin(name string) error
|
||||
// RemovePlugin 卸载插件:先停止(stop handlers + Stop),再执行插件注册的
|
||||
// onRemove 回调(RegisterOnRemoveHandler),最后从注册表移除。目录删除由调用方负责。
|
||||
RemovePlugin(name string) error
|
||||
ReloadPlugins() (string, error)
|
||||
PluginMetas() map[string]PluginMeta
|
||||
PluginDir() string
|
||||
|
||||
@ -9,6 +9,8 @@ type SettingsAPI interface {
|
||||
DefsCore(prefix string) []*ConfigDef
|
||||
// DefsPlugin 返回另一个插件的配置定义。
|
||||
DefsPlugin(plugin, prefix string) []*ConfigDef
|
||||
// Remove 删除本插件配置中的单个键(插件删除时清理自身配置用)。
|
||||
Remove(key string) error
|
||||
}
|
||||
|
||||
type ConfigDef = pubsdk.ConfigDef
|
||||
|
||||
@ -24,6 +24,10 @@ func (s *settingsImpl) Set(key string, value interface{}) error {
|
||||
if s.reg == nil { return nil }
|
||||
return s.reg.PluginConfig(s.pluginName).Set(key, value)
|
||||
}
|
||||
func (s *settingsImpl) Remove(key string) error {
|
||||
if s.reg == nil { return nil }
|
||||
return s.reg.PluginConfig(s.pluginName).Remove(key)
|
||||
}
|
||||
func (s *settingsImpl) List(prefix string) ([]string, error) {
|
||||
if s.reg == nil { return nil, nil }
|
||||
return s.reg.PluginConfig(s.pluginName).List(prefix)
|
||||
|
||||
Reference in New Issue
Block a user