+ RunE: func(cmd *cobra.Command, args []string) error {
+ sdlgoredis.SetDbLogger(&buf)
+ if len(args) < 2 {
+ return fmt.Errorf("accepts command or arguments, received %d", len(args))
+ }
+ data, err := runGet(sdlCb, args)
+ if err != nil {
+ fmt.Fprintf(os.Stderr, "%s", buf.String())
+ return err
+ }
+ printData(cmd, data)
+ return nil
+ },
+ }
+ cmd.SetOut(os.Stdout)
+ return cmd
+}
+
+func runGet(sdlCb SyncStorageCreateCb, args []string) (map[string]interface{}, error) {
+ data, err := sdlCb().Get(args[0], args[1:])
+ if err != nil {
+ return nil, err
+ }
+ return data, nil
+}
+
+func printData(cmd *cobra.Command, data map[string]interface{}) {
+ var str string
+ var sortedKeys []string
+ for key := range data {
+ sortedKeys = append(sortedKeys, key)
+ }
+ sort.Strings(sortedKeys)
+ for _, k := range sortedKeys {
+ value, ok := data[k]
+ if ok && value != nil {
+ str = fmt.Sprintf("%s:%s", k, value)
+ cmd.Printf(str + "\n")
+ }