1
1
package internal
2
2
3
3
import (
4
+ "fmt"
4
5
"strings"
5
6
6
7
"github.com/jahvon/tuikit/views"
7
8
"github.com/spf13/cobra"
8
9
10
+ "github.com/jahvon/flow/cmd/internal/flags"
9
11
"github.com/jahvon/flow/internal/context"
10
12
"github.com/jahvon/flow/internal/io"
11
13
"github.com/jahvon/flow/internal/services/store"
@@ -25,7 +27,7 @@ func RegisterStoreCmd(ctx *context.Context, rootCmd *cobra.Command) {
25
27
26
28
func registerStoreSetCmd (ctx * context.Context , rootCmd * cobra.Command ) {
27
29
subCmd := & cobra.Command {
28
- Use : "set" ,
30
+ Use : "set KEY [VALUE] " ,
29
31
Short : "Set a key-value pair in the data store." ,
30
32
Long : dataStoreDescription + "This will overwrite any existing value for the key." ,
31
33
Args : cobra .MinimumNArgs (1 ),
@@ -61,15 +63,15 @@ func storeSetFunc(ctx *context.Context, _ *cobra.Command, args []string) {
61
63
case len (args ) == 2 :
62
64
value = args [1 ]
63
65
default :
64
- ctx .Logger .Warnx ( "merging multiple arguments into a single value" , "count" , len (args ))
66
+ ctx .Logger .PlainTextWarn ( fmt . Sprintf ( "merging multiple (%d) arguments into a single value" , len (args ) - 1 ))
65
67
value = strings .Join (args [1 :], " " )
66
68
}
67
69
68
70
s , err := store .NewStore ()
69
71
if err != nil {
70
72
ctx .Logger .FatalErr (err )
71
73
}
72
- if err = s .CreateBucket (); err != nil {
74
+ if err = s .CreateBucket (store . EnvironmentBucket () ); err != nil {
73
75
ctx .Logger .FatalErr (err )
74
76
}
75
77
defer func () {
@@ -80,12 +82,12 @@ func storeSetFunc(ctx *context.Context, _ *cobra.Command, args []string) {
80
82
if err = s .Set (key , value ); err != nil {
81
83
ctx .Logger .FatalErr (err )
82
84
}
83
- ctx .Logger .Infof ( "Key %q set in the store" , key )
85
+ ctx .Logger .PlainTextInfo ( fmt . Sprintf ( "Key %q set in the store" , key ) )
84
86
}
85
87
86
88
func registerStoreGetCmd (ctx * context.Context , rootCmd * cobra.Command ) {
87
89
subCmd := & cobra.Command {
88
- Use : "get" ,
90
+ Use : "get KEY " ,
89
91
Aliases : []string {"view" },
90
92
Short : "Get a value from the data store." ,
91
93
Long : dataStoreDescription + "This will retrieve the value for the given key." ,
@@ -104,7 +106,7 @@ func storeGetFunc(ctx *context.Context, _ *cobra.Command, args []string) {
104
106
if err != nil {
105
107
ctx .Logger .FatalErr (err )
106
108
}
107
- if err = s .CreateBucket ( ); err != nil {
109
+ if _ , err = s .CreateAndSetBucket ( store . EnvironmentBucket () ); err != nil {
108
110
ctx .Logger .FatalErr (err )
109
111
}
110
112
defer func () {
@@ -130,15 +132,29 @@ func registerStoreClearCmd(ctx *context.Context, rootCmd *cobra.Command) {
130
132
storeClearFunc (ctx , cmd , args )
131
133
},
132
134
}
135
+ RegisterFlag (ctx , subCmd , * flags .StoreFullFlag )
133
136
rootCmd .AddCommand (subCmd )
134
137
}
135
138
136
- func storeClearFunc (ctx * context.Context , _ * cobra.Command , _ []string ) {
139
+ func storeClearFunc (ctx * context.Context , cmd * cobra.Command , _ []string ) {
140
+ full := flags .ValueFor [bool ](ctx , cmd , * flags .StoreFullFlag , false )
141
+ if full {
142
+ if err := store .DestroyStore (); err != nil {
143
+ ctx .Logger .FatalErr (err )
144
+ }
145
+ ctx .Logger .PlainTextSuccess ("Data store cleared" )
146
+ return
147
+ }
137
148
s , err := store .NewStore ()
138
149
if err != nil {
139
150
ctx .Logger .FatalErr (err )
140
151
}
141
- if err := s .DeleteBucket (); err != nil {
152
+ defer func () {
153
+ if err := s .Close (); err != nil {
154
+ ctx .Logger .Error (err , "cleanup failure" )
155
+ }
156
+ }()
157
+ if err := s .DeleteBucket (store .EnvironmentBucket ()); err != nil {
142
158
ctx .Logger .FatalErr (err )
143
159
}
144
160
ctx .Logger .PlainTextSuccess ("Data store cleared" )
0 commit comments