aboutsummaryrefslogtreecommitdiff
path: root/cmd/bolt/keys.go
diff options
context:
space:
mode:
Diffstat (limited to 'cmd/bolt/keys.go')
-rw-r--r--cmd/bolt/keys.go32
1 files changed, 22 insertions, 10 deletions
diff --git a/cmd/bolt/keys.go b/cmd/bolt/keys.go
index 6affefe..65b717f 100644
--- a/cmd/bolt/keys.go
+++ b/cmd/bolt/keys.go
@@ -1,6 +1,8 @@
package main
import (
+ "errors"
+ "fmt"
"os"
"github.com/boltdb/bolt"
@@ -8,34 +10,44 @@ import (
// Keys retrieves a list of keys for a given bucket.
func Keys(path, name string) {
- if _, err := os.Stat(path); os.IsNotExist(err) {
+ keys, err := keys(path, name)
+
+ if err != nil {
fatal(err)
return
}
+ for _, key := range keys {
+ println(key)
+ }
+}
+
+func keys(path, name string) ([]string, error) {
+ if _, err := os.Stat(path); os.IsNotExist(err) {
+ return nil, err
+ }
+
db, err := bolt.Open(path, 0600)
if err != nil {
- fatal(err)
- return
+ return nil, err
}
defer db.Close()
+ keys := []string{}
+
err = db.View(func(tx *bolt.Tx) error {
// Find bucket.
b := tx.Bucket([]byte(name))
if b == nil {
- fatalf("bucket not found: %s", name)
- return nil
+ return errors.New(fmt.Sprintf("bucket %+v not found", b))
}
// Iterate over each key.
return b.ForEach(func(key, _ []byte) error {
- println(string(key))
+ keys = append(keys, string(key))
return nil
})
})
- if err != nil {
- fatal(err)
- return
- }
+
+ return keys, err
}