diff --git a/cmd/khepri/cmd_key.go b/cmd/khepri/cmd_key.go new file mode 100644 index 000000000..7ef9df1b9 --- /dev/null +++ b/cmd/khepri/cmd_key.go @@ -0,0 +1,50 @@ +package main + +import ( + "encoding/json" + "errors" + "fmt" + "os" + + "github.com/fd0/khepri" + "github.com/fd0/khepri/backend" +) + +func list_keys(be backend.Server, key *khepri.Key) error { + tab := NewTable() + tab.Header = fmt.Sprintf("%-10s %-10s %-10s %s", "ID", "User", "Host", "Created") + tab.RowFormat = "%-10s %-10s %-10s %s" + + plen, err := backend.PrefixLength(be, backend.Key) + if err != nil { + return err + } + + backend.Each(be, backend.Key, func(id backend.ID, data []byte, err error) { + k := khepri.Key{} + err = json.Unmarshal(data, &k) + if err != nil { + return + } + + tab.Rows = append(tab.Rows, []interface{}{id[:plen], + k.Username, k.Hostname, k.Created.Format(TimeFormat)}) + }) + + tab.Print(os.Stdout) + + return nil +} + +func commandKey(be backend.Server, key *khepri.Key, args []string) error { + if len(args) < 1 { + return errors.New("usage: key [list]") + } + + switch args[0] { + case "list": + return list_keys(be, key) + } + + return nil +} diff --git a/cmd/khepri/main.go b/cmd/khepri/main.go index e3ccc3c6f..9cadfa559 100644 --- a/cmd/khepri/main.go +++ b/cmd/khepri/main.go @@ -129,6 +129,7 @@ func init() { commands["snapshots"] = commandSnapshots commands["cat"] = commandCat commands["ls"] = commandLs + commands["key"] = commandKey // set GOMAXPROCS to number of CPUs runtime.GOMAXPROCS(runtime.NumCPU())