mbrts/state.go

45 lines
892 B
Go
Raw Normal View History

package main
import (
"encoding/json"
"errors"
"os"
"path/filepath"
)
type accountState struct {
AccountID string `json:"account_id"`
EmailState string `json:"email_state"`
}
func accountStatePath(name string) string {
return filepath.Join(filepath.Dir(defaultConfigPath()), name+".state.json")
}
func loadAccountState(path string) (accountState, error) {
var s accountState
data, err := os.ReadFile(path)
if errors.Is(err, os.ErrNotExist) {
return s, nil
}
if err != nil {
return s, err
}
return s, json.Unmarshal(data, &s)
}
func saveAccountState(path string, s accountState) error {
if err := os.MkdirAll(filepath.Dir(path), 0700); err != nil {
return err
}
data, err := json.MarshalIndent(s, "", " ")
if err != nil {
return err
}
tmp := path + ".tmp"
if err := os.WriteFile(tmp, data, 0600); err != nil {
return err
}
return os.Rename(tmp, path)
}