Skip to content

Commit 74fbde0

Browse files
authored
feat: added cache purge (#1532)
Signed-off-by: AlexsJones <alexsimonjones@gmail.com>
1 parent ff61948 commit 74fbde0

1 file changed

Lines changed: 36 additions & 7 deletions

File tree

cmd/cache/purge.go

Lines changed: 36 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -23,23 +23,51 @@ import (
2323
"github.com/spf13/cobra"
2424
)
2525

26+
var all bool
27+
2628
var 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

5280
func init() {
81+
purgeCmd.Flags().BoolVar(&all, "all", false, "Purge all objects in the cache")
5382
CacheCmd.AddCommand(purgeCmd)
5483
}

0 commit comments

Comments
 (0)