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.
This commit is contained in:
parent
3f46ac6513
commit
b5d4f547d2
1 changed files with 8 additions and 9 deletions
|
@ -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]
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue