mirror of
https://gitcode.com/JianFeeeee/HomeAgent.git
synced 2026-09-22 09:58:06 +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:
@ -44,6 +44,12 @@ func (p *Plugin) Start(s *sdk.PluginSDK) error {
|
||||
p.maxDur = 24 * time.Hour
|
||||
// 停止清理(取消倒计时)交由 stop handler:内核在调用 Stop() 之前执行。
|
||||
s.RegisterStopHandler(func() { close(p.stopCh) })
|
||||
// 删除清理:移除插件自身配置(删除专用回调,重载不触发)。
|
||||
s.RegisterOnRemoveHandler(func() {
|
||||
if err := s.Settings().Remove("max_duration"); err != nil {
|
||||
log.Printf("[timer] onRemove cleanup: %v", err)
|
||||
}
|
||||
})
|
||||
s.Settings().RegisterDef(sdk.ConfigDef{
|
||||
Key: "max_duration", Type: "string", DisplayName: "最大定时时长",
|
||||
Description: "允许设置的最大定时时长,例如 24h, 7d, 1h(默认 24h)",
|
||||
|
||||
Reference in New Issue
Block a user