~ knotless Search/
↑↓ move↵ open⇧↵ all results
0
0
main
35 lines · 632 B Raw History
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
}