package steamimmich import ( "encoding/json" "errors" "io" "os" ) type assetState struct { FilePath string ImmichID string } type localState struct { Assets []assetState GameIDs map[string]string } func loadLocalState(filename string) (*localState, error) { file, err := os.Open(filename) if err != nil { if errors.Is(err, os.ErrNotExist) { return &localState{Assets: []assetState{}, GameIDs: map[string]string{}}, nil } return nil, err } content, err := io.ReadAll(file) if err != nil { return nil, err } var data localState err = json.Unmarshal(content, &data) if err != nil { return nil, err } return &data, nil } func saveLocalState(filename string, state localState) error { content, err := json.Marshal(state) if err != nil { return err } return os.WriteFile(filename, content, 0644) }