From 44c2e6763ca52a5663bd94f7e71ac0a7595b578c Mon Sep 17 00:00:00 2001 From: Christopher Campbell Date: Tue, 28 Jan 2025 14:28:32 -0500 Subject: [PATCH] check follow and num flags exclusivity --- .../command_framework/lowlevel/flags/parsed_flags.go | 8 ++++++++ cli/cli/commands/service/logs/logs.go | 12 +++++++++--- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/cli/cli/command_framework/lowlevel/flags/parsed_flags.go b/cli/cli/command_framework/lowlevel/flags/parsed_flags.go index 3d9efb8bc8..5860884f03 100644 --- a/cli/cli/command_framework/lowlevel/flags/parsed_flags.go +++ b/cli/cli/command_framework/lowlevel/flags/parsed_flags.go @@ -57,3 +57,11 @@ func (flags *ParsedFlags) GetBool(name string) (bool, error) { } return value, nil } + +func (flags *ParsedFlags) HasFlag(name string) bool { + _, err := flags.cmdFlagsSet.GetString(name) + if err != nil { + return true + } + return false +} diff --git a/cli/cli/commands/service/logs/logs.go b/cli/cli/commands/service/logs/logs.go index 550cb5df0b..3aaea3e2ba 100644 --- a/cli/cli/commands/service/logs/logs.go +++ b/cli/cli/commands/service/logs/logs.go @@ -7,7 +7,12 @@ package logs import ( "context" + "errors" "fmt" + "os" + "os/signal" + "strconv" + "github.com/fatih/color" "github.com/kurtosis-tech/kurtosis/api/golang/core/lib/services" "github.com/kurtosis-tech/kurtosis/api/golang/engine/kurtosis_engine_rpc_api_bindings" @@ -24,9 +29,6 @@ import ( "github.com/kurtosis-tech/kurtosis/metrics-library/golang/lib/metrics_client" "github.com/kurtosis-tech/stacktrace" "github.com/sirupsen/logrus" - "os" - "os/signal" - "strconv" ) const ( @@ -194,6 +196,10 @@ func run( return stacktrace.Propagate(err, "An error occurred getting the should-follow-logs flag using key '%v'", shouldFollowLogsFlagKey) } + if shouldFollowLogs && flags.HasFlag(returnNumLogsFlagKey) { + return stacktrace.Propagate(errors.ErrUnsupported, "`%v` flag cannot be used with `%v` flag", shouldFollowLogsFlagKey, returnNumLogsFlagKey) + } + shouldReturnAllLogs, err := flags.GetBool(returnAllLogsFlagKey) if err != nil { return stacktrace.Propagate(err, "An error occurred getting the 'all' flag using key '%v'", returnAllLogsFlagKey)