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.
41 lines
599 B
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
|
|
}
|