v0.7.2: fix cfgmgr plugin list and core config key prefix

This commit is contained in:
root
2026-07-25 12:18:01 +08:00
parent 14f66f3b71
commit e992e1ff84
3 changed files with 40 additions and 11 deletions

View File

@ -631,6 +631,24 @@ func (r *ConfigRegistry) ToConfig() *types.Config {
return cfg return cfg
} }
func (r *ConfigRegistry) ListPlugins() []string {
r.mu.RLock()
defer r.mu.RUnlock()
rows, err := r.db.Query(`SELECT name FROM sqlite_master WHERE type='table' AND name LIKE 'config_%' ORDER BY name`)
if err != nil {
return nil
}
defer rows.Close()
var names []string
for rows.Next() {
var tableName string
if err := rows.Scan(&tableName); err == nil {
names = append(names, tableName[7:])
}
}
return names
}
func (r *ConfigRegistry) PluginConfig(name string) *PluginSettings { func (r *ConfigRegistry) PluginConfig(name string) *PluginSettings {
r.ensurePluginTable(name) r.ensurePluginTable(name)
return &PluginSettings{ return &PluginSettings{

View File

@ -5,7 +5,7 @@ package meta
var ( var (
// Version 是 HomeAgent 内核版本号。 // Version 是 HomeAgent 内核版本号。
// 通过 `-ldflags="-X gitcode.com/JianFeeeee/HomeAgent/internal/meta.Version=vX.Y.Z"` 注入。 // 通过 `-ldflags="-X gitcode.com/JianFeeeee/HomeAgent/internal/meta.Version=vX.Y.Z"` 注入。
Version = "0.7.1" Version = "0.7.2"
// Commit 是构建时的 Git commit hash。 // Commit 是构建时的 Git commit hash。
Commit = "unknown" Commit = "unknown"

View File

@ -2,6 +2,8 @@ package sdk
import ( import (
"fmt" "fmt"
"strings"
internalConfig "gitcode.com/JianFeeeee/HomeAgent/internal/config" internalConfig "gitcode.com/JianFeeeee/HomeAgent/internal/config"
) )
@ -26,17 +28,28 @@ func (s *settingsImpl) List(prefix string) ([]string, error) {
if s.reg == nil { return nil, nil } if s.reg == nil { return nil, nil }
return s.reg.PluginConfig(s.pluginName).List(prefix) return s.reg.PluginConfig(s.pluginName).List(prefix)
} }
func coreKey(key string) string {
if strings.HasPrefix(key, "core.") {
return key
}
return "core." + key
}
func (s *settingsImpl) GetCore(key string) (interface{}, error) { func (s *settingsImpl) GetCore(key string) (interface{}, error) {
if s.reg == nil { return nil, nil } if s.reg == nil { return nil, nil }
return s.reg.Get(key) return s.reg.Get(coreKey(key))
} }
func (s *settingsImpl) SetCore(key string, value interface{}) error { func (s *settingsImpl) SetCore(key string, value interface{}) error {
if s.reg == nil { return nil } if s.reg == nil { return nil }
return s.reg.Set(key, value) return s.reg.Set(coreKey(key), value)
} }
func (s *settingsImpl) ListCore(prefix string) ([]string, error) { func (s *settingsImpl) ListCore(prefix string) ([]string, error) {
if s.reg == nil { return nil, nil } if s.reg == nil { return nil, nil }
return s.reg.List(prefix), nil p := coreKey(prefix)
if p == "core." {
p = "core."
}
return s.reg.List(p), nil
} }
func (s *settingsImpl) GetPlugin(plugin, key string) (interface{}, error) { func (s *settingsImpl) GetPlugin(plugin, key string) (interface{}, error) {
if s.reg == nil { return nil, nil } if s.reg == nil { return nil, nil }
@ -78,13 +91,11 @@ func (s *settingsImpl) Dump() map[string]interface{} {
} }
func (s *settingsImpl) Plugins() []string { func (s *settingsImpl) Plugins() []string {
if s.reg == nil { return nil } if s.reg == nil { return nil }
keys := s.reg.List("config_") names := s.reg.ListPlugins()
names := make([]string, 0, len(keys)+1) result := make([]string, 0, len(names)+1)
names = append(names, "core") result = append(result, "core")
for _, k := range keys { result = append(result, names...)
if len(k) > 7 { names = append(names, k[7:]) } return result
}
return names
} }
func stringifyDefault(v interface{}) string { func stringifyDefault(v interface{}) string {