github.com/markusbkk/elvish@v0.0.0-20231204143114-91dc52438621/pkg/store/shared_var.go (about) 1 package store 2 3 import ( 4 "errors" 5 6 bolt "go.etcd.io/bbolt" 7 ) 8 9 // ErrNoSharedVar is returned by Store.SharedVar when there is no such variable. 10 var ErrNoSharedVar = errors.New("no such shared variable") 11 12 func init() { 13 initDB["initialize shared variable table"] = func(tx *bolt.Tx) error { 14 _, err := tx.CreateBucketIfNotExists([]byte(bucketSharedVar)) 15 return err 16 } 17 } 18 19 // SharedVar gets the value of a shared variable. 20 func (s *dbStore) SharedVar(n string) (string, error) { 21 var value string 22 err := s.db.View(func(tx *bolt.Tx) error { 23 b := tx.Bucket([]byte(bucketSharedVar)) 24 v := b.Get([]byte(n)) 25 if v == nil { 26 return ErrNoSharedVar 27 } 28 value = string(v) 29 return nil 30 }) 31 return value, err 32 } 33 34 // SetSharedVar sets the value of a shared variable. 35 func (s *dbStore) SetSharedVar(n, v string) error { 36 return s.db.Update(func(tx *bolt.Tx) error { 37 b := tx.Bucket([]byte(bucketSharedVar)) 38 return b.Put([]byte(n), []byte(v)) 39 }) 40 } 41 42 // DelSharedVar deletes a shared variable. 43 func (s *dbStore) DelSharedVar(n string) error { 44 return s.db.Update(func(tx *bolt.Tx) error { 45 b := tx.Bucket([]byte(bucketSharedVar)) 46 return b.Delete([]byte(n)) 47 }) 48 }