]> ruderich.org/simon Gitweb - nsscash/nsscash.git/blobdiff - state.go
Update copyright years
[nsscash/nsscash.git] / state.go
index b0dec1c2d47673fffa5eb81ee8e3d3113fce689f..4b3124137530213e5444867c797afa29e3ff5dea 100644 (file)
--- a/state.go
+++ b/state.go
@@ -1,6 +1,6 @@
 // Read and write the state file used to keep data over multiple runs
 
-// Copyright (C) 2019  Simon Ruderich
+// Copyright (C) 2019-2020  Simon Ruderich
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU Affero General Public License as published by
@@ -22,15 +22,13 @@ import (
        "io/ioutil"
        "os"
        "path/filepath"
-       "reflect"
        "time"
 )
 
 type State struct {
+       // Key is File.Url
        LastModified map[string]time.Time
-
-       // Copy of LastModified to write the state file only on changes
-       origLastModified map[string]time.Time
+       Checksum     map[string]string // SHA512 in hex
 }
 
 func LoadState(path string) (*State, error) {
@@ -53,20 +51,17 @@ func LoadState(path string) (*State, error) {
        if state.LastModified == nil {
                state.LastModified = make(map[string]time.Time)
        }
-
-       state.origLastModified = make(map[string]time.Time)
-       for k, v := range state.LastModified {
-               state.origLastModified[k] = v
+       if state.Checksum == nil {
+               state.Checksum = make(map[string]string)
        }
 
        return &state, nil
 }
 
-func WriteStateIfChanged(path string, state *State) error {
-       // State hasn't changed, nothing to do
-       if reflect.DeepEqual(state.LastModified, state.origLastModified) {
-               return nil
-       }
+func WriteState(path string, state *State) error {
+       // Update the state file even if nothing has changed to provide a
+       // simple way to check if nsscash ran successfully (the state is only
+       // updated if there were no errors)
 
        x, err := json.Marshal(state)
        if err != nil {