From 662da8ce33c4ea2277eecc18be471c8a03545820 Mon Sep 17 00:00:00 2001 From: marco Date: Wed, 30 Apr 2025 13:40:15 +0200 Subject: [PATCH] custom duration type for "cscli bouncers prune" --- cmd/crowdsec-cli/clibouncer/prune.go | 15 ++++++++------- test/bats/10_bouncers.bats | 7 +++++++ 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/cmd/crowdsec-cli/clibouncer/prune.go b/cmd/crowdsec-cli/clibouncer/prune.go index 3c27efe39..4018d9ef0 100644 --- a/cmd/crowdsec-cli/clibouncer/prune.go +++ b/cmd/crowdsec-cli/clibouncer/prune.go @@ -9,10 +9,14 @@ import ( "github.com/fatih/color" "github.com/spf13/cobra" + "github.com/crowdsecurity/go-cs-lib/cstime" + "github.com/crowdsecurity/crowdsec/cmd/crowdsec-cli/args" "github.com/crowdsecurity/crowdsec/cmd/crowdsec-cli/ask" ) +const defaultPruneDuration = 60 * time.Minute + func (cli *cliBouncers) prune(ctx context.Context, duration time.Duration, force bool) error { if duration < 2*time.Minute { if yes, err := ask.YesNo( @@ -59,12 +63,9 @@ func (cli *cliBouncers) prune(ctx context.Context, duration time.Duration, force } func (cli *cliBouncers) newPruneCmd() *cobra.Command { - var ( - duration time.Duration - force bool - ) + var force bool - const defaultDuration = 60 * time.Minute + duration := cstime.Duration(defaultPruneDuration) cmd := &cobra.Command{ Use: "prune", @@ -74,12 +75,12 @@ func (cli *cliBouncers) newPruneCmd() *cobra.Command { Example: `cscli bouncers prune -d 45m cscli bouncers prune -d 45m --force`, RunE: func(cmd *cobra.Command, _ []string) error { - return cli.prune(cmd.Context(), duration, force) + return cli.prune(cmd.Context(), time.Duration(duration), force) }, } flags := cmd.Flags() - flags.DurationVarP(&duration, "duration", "d", defaultDuration, "duration of time since last pull") + flags.VarP(&duration, "duration", "d", "duration of time since last pull") flags.BoolVar(&force, "force", false, "force prune without asking for confirmation") return cmd diff --git a/test/bats/10_bouncers.bats b/test/bats/10_bouncers.bats index 382205796..9381a4528 100644 --- a/test/bats/10_bouncers.bats +++ b/test/bats/10_bouncers.bats @@ -133,6 +133,13 @@ teardown() { } @test "cscli bouncers prune" { + rune -1 cscli bouncers prune --duration foobar + assert_stderr 'Error: invalid argument "foobar" for "-d, --duration" flag: time: invalid duration "foobar"' + + # duration takes days as well + rune -0 cscli bouncers prune --duration 1d30m + assert_output 'No bouncers to prune.' + rune -0 cscli bouncers prune assert_output 'No bouncers to prune.' rune -0 cscli bouncers add ciTestBouncer