11package internal
22
33import (
4+ "fmt"
45 "strings"
56
67 "github.com/jahvon/tuikit/views"
78 "github.com/spf13/cobra"
89
10+ "github.com/jahvon/flow/cmd/internal/flags"
911 "github.com/jahvon/flow/internal/context"
1012 "github.com/jahvon/flow/internal/io"
1113 "github.com/jahvon/flow/internal/services/store"
@@ -25,7 +27,7 @@ func RegisterStoreCmd(ctx *context.Context, rootCmd *cobra.Command) {
2527
2628func registerStoreSetCmd (ctx * context.Context , rootCmd * cobra.Command ) {
2729 subCmd := & cobra.Command {
28- Use : "set" ,
30+ Use : "set KEY [VALUE] " ,
2931 Short : "Set a key-value pair in the data store." ,
3032 Long : dataStoreDescription + "This will overwrite any existing value for the key." ,
3133 Args : cobra .MinimumNArgs (1 ),
@@ -61,15 +63,15 @@ func storeSetFunc(ctx *context.Context, _ *cobra.Command, args []string) {
6163 case len (args ) == 2 :
6264 value = args [1 ]
6365 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 ))
6567 value = strings .Join (args [1 :], " " )
6668 }
6769
6870 s , err := store .NewStore ()
6971 if err != nil {
7072 ctx .Logger .FatalErr (err )
7173 }
72- if err = s .CreateBucket (); err != nil {
74+ if err = s .CreateBucket (store . EnvironmentBucket () ); err != nil {
7375 ctx .Logger .FatalErr (err )
7476 }
7577 defer func () {
@@ -80,12 +82,12 @@ func storeSetFunc(ctx *context.Context, _ *cobra.Command, args []string) {
8082 if err = s .Set (key , value ); err != nil {
8183 ctx .Logger .FatalErr (err )
8284 }
83- ctx .Logger .Infof ( "Key %q set in the store" , key )
85+ ctx .Logger .PlainTextInfo ( fmt . Sprintf ( "Key %q set in the store" , key ) )
8486}
8587
8688func registerStoreGetCmd (ctx * context.Context , rootCmd * cobra.Command ) {
8789 subCmd := & cobra.Command {
88- Use : "get" ,
90+ Use : "get KEY " ,
8991 Aliases : []string {"view" },
9092 Short : "Get a value from the data store." ,
9193 Long : dataStoreDescription + "This will retrieve the value for the given key." ,
@@ -104,7 +106,7 @@ func storeGetFunc(ctx *context.Context, _ *cobra.Command, args []string) {
104106 if err != nil {
105107 ctx .Logger .FatalErr (err )
106108 }
107- if err = s .CreateBucket ( ); err != nil {
109+ if _ , err = s .CreateAndSetBucket ( store . EnvironmentBucket () ); err != nil {
108110 ctx .Logger .FatalErr (err )
109111 }
110112 defer func () {
@@ -130,15 +132,29 @@ func registerStoreClearCmd(ctx *context.Context, rootCmd *cobra.Command) {
130132 storeClearFunc (ctx , cmd , args )
131133 },
132134 }
135+ RegisterFlag (ctx , subCmd , * flags .StoreFullFlag )
133136 rootCmd .AddCommand (subCmd )
134137}
135138
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+ }
137148 s , err := store .NewStore ()
138149 if err != nil {
139150 ctx .Logger .FatalErr (err )
140151 }
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 {
142158 ctx .Logger .FatalErr (err )
143159 }
144160 ctx .Logger .PlainTextSuccess ("Data store cleared" )
0 commit comments