/
show.go
36 lines (32 loc) · 794 Bytes
/
show.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
package main
import (
"fmt"
"github.com/jrhy/s3db/kv"
)
func init() {
cmd := "show"
usage := cmd
desc := `Prints entries to stdout.`
subcommandUsage[cmd] = usage
subcommandDesc[cmd] = desc
subcommandFuncs[cmd] = func(sa *subcommandArgs) int {
db := open(sa.Ctx, &kv.OpenOptions{ReadOnly: true}, sa)
err := db.Diff(sa.Ctx, nil, sa.dump())
if err != nil {
fmt.Fprintln(sa.Stderr, err)
return 1
}
return 0
}
}
func (sa *subcommandArgs) dump() func(interface{}, interface{}, interface{}) (bool, error) {
return func(key, myValue, fromValue interface{}) (keepGoing bool, err error) {
switch x := myValue.(type) {
case []byte:
fmt.Fprintf(sa.Stdout, "%v: %s\n", key, string(x))
default:
fmt.Fprintf(sa.Stdout, "%v: %v\n", key, x)
}
return true, nil
}
}