package fsx import ( "encoding/json" "os" "path/filepath" ) func WriteJSON(path string, v any, mode os.FileMode) error { b, err := json.MarshalIndent(v, "", " ") if err != nil { return err } if err := os.MkdirAll(filepath.Dir(path), 0o700); err != nil { return err } tmp := path + ".tmp" if err := os.WriteFile(tmp, append(b, '\n'), mode); err != nil { return err } return os.Rename(tmp, path) } func ReadJSON(path string, v any) error { b, err := os.ReadFile(path) if err != nil { return err } return json.Unmarshal(b, v) } func Exists(path string) bool { _, err := os.Stat(path) return err == nil }