Fix YAML patch in some cases #1626

This commit is contained in:
Alex X
2025-03-07 21:44:23 +03:00
parent 39c14e6556
commit a15deedf0d
6 changed files with 237 additions and 248 deletions
+2 -2
View File
@@ -18,7 +18,7 @@ func LoadConfig(v any) {
}
}
func PatchConfig(key string, value any, path ...string) error {
func PatchConfig(path []string, value any) error {
if ConfigPath == "" {
return errors.New("config file disabled")
}
@@ -26,7 +26,7 @@ func PatchConfig(key string, value any, path ...string) error {
// empty config is OK
b, _ := os.ReadFile(ConfigPath)
b, err := yaml.Patch(b, key, value, path...)
b, err := yaml.Patch(b, path, value)
if err != nil {
return err
}
+2 -2
View File
@@ -103,7 +103,7 @@ func apiPair(id, url string) error {
streams.New(id, conn.URL())
return app.PatchConfig(id, conn.URL(), "streams")
return app.PatchConfig([]string{"streams", id}, conn.URL())
}
func apiUnpair(id string) error {
@@ -123,7 +123,7 @@ func apiUnpair(id string) error {
streams.Delete(id)
return app.PatchConfig(id, nil, "streams")
return app.PatchConfig([]string{"streams", id}, nil)
}
func findHomeKitURLs() map[string]*url.URL {
+1 -1
View File
@@ -222,7 +222,7 @@ func (s *server) DelPair(conn net.Conn, id string) {
}
func (s *server) PatchConfig() {
if err := app.PatchConfig("pairings", s.pairings, "homekit", s.stream); err != nil {
if err := app.PatchConfig([]string{"homekit", s.stream, "pairings"}, s.pairings); err != nil {
log.Error().Err(err).Msgf(
"[homekit] can't save %s pairings=%v", s.stream, s.pairings,
)
+2 -2
View File
@@ -53,7 +53,7 @@ func apiStreams(w http.ResponseWriter, r *http.Request) {
return
}
if err := app.PatchConfig(name, query["src"], "streams"); err != nil {
if err := app.PatchConfig([]string{"streams", name}, query["src"]); err != nil {
http.Error(w, err.Error(), http.StatusBadRequest)
}
@@ -96,7 +96,7 @@ func apiStreams(w http.ResponseWriter, r *http.Request) {
case "DELETE":
delete(streams, src)
if err := app.PatchConfig(src, nil, "streams"); err != nil {
if err := app.PatchConfig([]string{"streams", src}, nil); err != nil {
http.Error(w, err.Error(), http.StatusBadRequest)
}
}