subtree(users/wpcarro): docking briefcase at '24f5a642'

git-subtree-dir: users/wpcarro
git-subtree-mainline: 464bbcb15c
git-subtree-split: 24f5a642af
Change-Id: I6105b3762b79126b3488359c95978cadb3efa789
This commit is contained in:
Vincent Ambo 2021-12-14 01:51:19 +03:00
commit 019f8fd211
766 changed files with 175420 additions and 0 deletions

View file

@ -0,0 +1,8 @@
{ depot, ... }:
depot.buildGo.package {
name = "kv";
srcs = [
./kv.go
];
}

View file

@ -0,0 +1,39 @@
// Supporting reading and writing key-value pairs to disk.
package kv
import (
"encoding/json"
"io/ioutil"
"log"
"path"
)
// Return the decoded store from disk.
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)
}
var state map[string]interface{}
err = json.Unmarshal(b, &state)
if err != nil {
log.Fatal("Could not decode store as JSON: ", err)
}
return state
}
// Set `key` to `value` in the store.
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(path.Join(storePath, "kv.json"), b, 0644)
}
// Get `key` from the store.
func Get(storePath string, key string) interface{} {
return getStore(path.Join(storePath, "kv.json"))[key]
}