@@ -23,23 +23,51 @@ import (
2323 "github.com/spf13/cobra"
2424)
2525
26+ var all bool
27+
2628var purgeCmd = & cobra.Command {
2729 Use : "purge [object name]" ,
2830 Short : "Purge a remote cache" ,
29- Long : "This command allows you to delete/purge one object from the cache" ,
31+ Long : "This command allows you to delete/purge one object from the cache or all objects with --all flag. " ,
3032 Run : func (cmd * cobra.Command , args []string ) {
31- if len (args ) == 0 {
32- color .Red ("Error: Please provide a value for object name. Run k8sgpt cache purge --help" )
33- os .Exit (1 )
34- }
35- objectKey := args [0 ]
36- fmt .Println (color .YellowString ("Purging a remote cache." ))
3733 c , err := cache .GetCacheConfiguration ()
3834 if err != nil {
3935 color .Red ("Error: %v" , err )
4036 os .Exit (1 )
4137 }
4238
39+ if all {
40+ fmt .Println (color .YellowString ("Purging all objects from the remote cache." ))
41+ names , err := c .List ()
42+ if err != nil {
43+ color .Red ("Error listing cache objects: %v" , err )
44+ os .Exit (1 )
45+ }
46+ if len (names ) == 0 {
47+ fmt .Println (color .GreenString ("No objects to delete." ))
48+ return
49+ }
50+ var failed []string
51+ for _ , obj := range names {
52+ err := c .Remove (obj .Name )
53+ if err != nil {
54+ failed = append (failed , obj .Name )
55+ }
56+ }
57+ if len (failed ) > 0 {
58+ color .Red ("Failed to delete: %v" , failed )
59+ os .Exit (1 )
60+ }
61+ fmt .Println (color .GreenString ("All objects deleted." ))
62+ return
63+ }
64+
65+ if len (args ) == 0 {
66+ color .Red ("Error: Please provide a value for object name or use --all. Run k8sgpt cache purge --help" )
67+ os .Exit (1 )
68+ }
69+ objectKey := args [0 ]
70+ fmt .Println (color .YellowString ("Purging a remote cache." ))
4371 err = c .Remove (objectKey )
4472 if err != nil {
4573 color .Red ("Error: %v" , err )
@@ -50,5 +78,6 @@ var purgeCmd = &cobra.Command{
5078}
5179
5280func init () {
81+ purgeCmd .Flags ().BoolVar (& all , "all" , false , "Purge all objects in the cache" )
5382 CacheCmd .AddCommand (purgeCmd )
5483}
0 commit comments