From fa224d9b384513d051d7a391194302c5524a8b64 Mon Sep 17 00:00:00 2001 From: lew Date: Thu, 6 Nov 2025 22:47:01 +0000 Subject: [PATCH] feat(parser): adds explicit DB parser for when we don't want a key - should probably reject keyinput on match --- cmd/list.go | 8 ++++++-- cmd/shared.go | 16 +++++++++++++++- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/cmd/list.go b/cmd/list.go index 499bc44..0ea145b 100644 --- a/cmd/list.go +++ b/cmd/list.go @@ -28,7 +28,7 @@ import ( // listCmd represents the set command var listCmd = &cobra.Command{ - Use: "list [@DB]", + Use: "list [DB]", Short: "List the contents of a db.", Args: cobra.MaximumNArgs(1), RunE: list, @@ -38,7 +38,11 @@ func list(cmd *cobra.Command, args []string) error { store := &Store{} targetDB := "@default" if len(args) == 1 { - targetDB = args[0] + dbName, err := store.parseDB(args[0], false) + if err != nil { + return err + } + targetDB = "@" + dbName } trans := TransactionArgs{ diff --git a/cmd/shared.go b/cmd/shared.go index 3f908b0..f6077aa 100644 --- a/cmd/shared.go +++ b/cmd/shared.go @@ -123,7 +123,7 @@ func (s *Store) AllStores() ([]string, error) { } func (s *Store) FindStore(k string) (string, error) { - _, n, err := s.parse(k, false) + n, err := s.parseDB(k, false) if err != nil { return "", err } @@ -176,6 +176,20 @@ func (s *Store) parse(k string, defaults bool) ([]byte, string, error) { return []byte(key), db, nil } +func (s *Store) parseDB(v string, defaults bool) (string, error) { + db := strings.TrimSpace(v) + if strings.HasPrefix(db, "@") { + db = strings.TrimPrefix(db, "@") + } + if db == "" { + if defaults { + return "default", nil + } + return "", fmt.Errorf("bad db format, use DB or @DB") + } + return strings.ToLower(db), nil +} + func (s *Store) open(name string) (*badger.DB, error) { if name == "" { name = "default"