36 lines
652 B
Go
36 lines
652 B
Go
package logs
|
|
|
|
import (
|
|
"encoding/json"
|
|
"os"
|
|
)
|
|
|
|
func ReadState(path string) (map[string]SourceState, error) {
|
|
data, err := os.ReadFile(path)
|
|
if err != nil {
|
|
if os.IsNotExist(err) {
|
|
return map[string]SourceState{}, nil
|
|
}
|
|
return nil, err
|
|
}
|
|
out := map[string]SourceState{}
|
|
if len(data) == 0 {
|
|
return out, nil
|
|
}
|
|
if err := json.Unmarshal(data, &out); err != nil {
|
|
return nil, err
|
|
}
|
|
return out, nil
|
|
}
|
|
|
|
func WriteState(path string, state map[string]SourceState) error {
|
|
if state == nil {
|
|
state = map[string]SourceState{}
|
|
}
|
|
data, err := json.Marshal(state)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return os.WriteFile(path, data, 0o600)
|
|
}
|