package peer import ( "encoding/json" "os" "path/filepath" ) func loadJSON(path string, target any) error { data, err := os.ReadFile(path) if err != nil { return err } return json.Unmarshal(data, target) } func storeJSON(path string, obj any) error { if err := os.MkdirAll(filepath.Dir(path), 0700); err != nil { return err } data, err := json.MarshalIndent(obj, "", " ") if err != nil { return err } tmpPath := path + ".tmp" if err := os.WriteFile(tmpPath, data, 0600); err != nil { return err } if err := os.Rename(tmpPath, path); err != nil { os.Remove(tmpPath) return err } return nil }