about summary refs log tree commit diff
diff options
context:
space:
mode:
authorWilliam Carroll <wpcarro@gmail.com>2020-02-23T19·58+0000
committerWilliam Carroll <wpcarro@gmail.com>2020-02-23T19·58+0000
commitb5d4f547d241b16ac068cb571ddadef0752e63c3 (patch)
tree6afac35a5591ac0c90a08a163eee384eb63995f7
parent3f46ac65133721262380033cfa6820f03a90be6f (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.go17
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]
 }