diff options
author | William Carroll <wpcarro@gmail.com> | 2020-02-23T19·58+0000 |
---|---|---|
committer | William Carroll <wpcarro@gmail.com> | 2020-02-23T19·58+0000 |
commit | b5d4f547d241b16ac068cb571ddadef0752e63c3 (patch) | |
tree | 6afac35a5591ac0c90a08a163eee384eb63995f7 | |
parent | 3f46ac65133721262380033cfa6820f03a90be6f (diff) |
Prefer explicit path for kv.json
Paying off some tech debt. Instead of relying ./kv.json existing, which is relative to the directory from which I start a program, I'm preferring that a consumer explicitly provides this path.
-rw-r--r-- | gopkgs/kv/kv.go | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/gopkgs/kv/kv.go b/gopkgs/kv/kv.go index 072f000eb2f0..040cc63e0e7c 100644 --- a/gopkgs/kv/kv.go +++ b/gopkgs/kv/kv.go @@ -5,13 +5,12 @@ import ( "encoding/json" "io/ioutil" "log" + "path" ) -const storePath = "./kv.json" - // Return the decoded store from disk. -func getStore() map[string]interface{} { - b, err := ioutil.ReadFile(storePath) +func getStore(storePath string) map[string]interface{} { + b, err := ioutil.ReadFile(path.Join(storePath, "kv.json")) if err != nil { log.Fatal("Could not read store: ", err) } @@ -24,17 +23,17 @@ func getStore() map[string]interface{} { } // Set `key` to `value` in the store. -func Set(key string, value interface{}) error { - state := getStore() +func Set(storePath string, key string, value interface{}) error { + state := getStore(storePath) state[key] = value b, err := json.Marshal(state) if err != nil { log.Fatal("Could not encode state as JSON: ", err) } - return ioutil.WriteFile(storePath, b, 0644) + return ioutil.WriteFile(path.Join(storePath, "kv.json"), b, 0644) } // Get `key` from the store. -func Get(key string) interface{} { - return getStore()[key] +func Get(storePath string, key string) interface{} { + return getStore(path.Join(storePath, "kv.json"))[key] } |