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:
commit
019f8fd211
766 changed files with 175420 additions and 0 deletions
8
users/wpcarro/gopkgs/kv/default.nix
Normal file
8
users/wpcarro/gopkgs/kv/default.nix
Normal file
|
@ -0,0 +1,8 @@
|
|||
{ depot, ... }:
|
||||
|
||||
depot.buildGo.package {
|
||||
name = "kv";
|
||||
srcs = [
|
||||
./kv.go
|
||||
];
|
||||
}
|
39
users/wpcarro/gopkgs/kv/kv.go
Normal file
39
users/wpcarro/gopkgs/kv/kv.go
Normal 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]
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue