You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gdg-counter-website/utils.go

41 lines
599 B
Go

package main
import (
"encoding/json"
"os"
)
func readOrCreateJson(filename string, value any) error {
f, err := os.Open(filename)
if err != nil {
if os.IsNotExist(err) {
return writeJson(filename, value)
}
return err
}
defer f.Close()
if json.NewDecoder(f).Decode(value); err != nil {
return err
}
return nil
}
func writeJson(filename string, value any) error {
f, err := os.Create(filename)
if err != nil {
return err
}
defer f.Close()
enc := json.NewEncoder(f)
enc.SetIndent("", " ")
if err := enc.Encode(value); err != nil {
return err
}
return nil
}