From 138e0d82d782fa8baa5769c4ef30b8a35ccd3827 Mon Sep 17 00:00:00 2001 From: Danny Olson Date: Tue, 30 Apr 2024 13:25:23 -0700 Subject: [PATCH 1/2] Show output for invalid config unset action --- cmd/config/config.go | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/cmd/config/config.go b/cmd/config/config.go index 5cb350ca..cd91112b 100644 --- a/cmd/config/config.go +++ b/cmd/config/config.go @@ -122,6 +122,28 @@ func run() func(*cobra.Command, []string) error { return writeConfig(configFile, v, setKeyFn) case viper.IsSet(UnsetFlag): + isValid := false + for _, s := range []string{ + cliflags.AccessTokenFlag, + cliflags.AnalyticsOptOut, + cliflags.BaseURIFlag, + cliflags.OutputFlag, + } { + if s == viper.GetString(UnsetFlag) { + isValid = true + } + } + if !isValid { + err := errors.NewError( + fmt.Sprintf(`{ + "message": "%s is not a valid configuration option" + }`, + viper.GetString(UnsetFlag), + ), + ) + return errors.NewError(output.CmdOutputError(viper.GetString(cliflags.OutputFlag), err)) + } + config, v, err := getConfig() if err != nil { return err From 87a7112b8c5fc0b2f862252a9e1e40efcf34a79f Mon Sep 17 00:00:00 2001 From: Danny Olson Date: Tue, 30 Apr 2024 15:54:37 -0700 Subject: [PATCH 2/2] Show output for invalid config set action --- cmd/config/config.go | 50 +++++++++++++++++++++++++------------------- 1 file changed, 29 insertions(+), 21 deletions(-) diff --git a/cmd/config/config.go b/cmd/config/config.go index cd91112b..291fbe40 100644 --- a/cmd/config/config.go +++ b/cmd/config/config.go @@ -96,6 +96,13 @@ func run() func(*cobra.Command, []string) error { return errors.NewError("flag needs an argument: --set") } + for i := 0; i < len(args)-1; i += 2 { + _, ok := cliflags.AllFlagsHelp()[args[i]] + if !ok { + return newErr(args[i]) + } + } + rawConfig, v, err := getRawConfig() if err != nil { return err @@ -122,26 +129,9 @@ func run() func(*cobra.Command, []string) error { return writeConfig(configFile, v, setKeyFn) case viper.IsSet(UnsetFlag): - isValid := false - for _, s := range []string{ - cliflags.AccessTokenFlag, - cliflags.AnalyticsOptOut, - cliflags.BaseURIFlag, - cliflags.OutputFlag, - } { - if s == viper.GetString(UnsetFlag) { - isValid = true - } - } - if !isValid { - err := errors.NewError( - fmt.Sprintf(`{ - "message": "%s is not a valid configuration option" - }`, - viper.GetString(UnsetFlag), - ), - ) - return errors.NewError(output.CmdOutputError(viper.GetString(cliflags.OutputFlag), err)) + _, ok := cliflags.AllFlagsHelp()[viper.GetString(UnsetFlag)] + if !ok { + return newErr(viper.GetString(UnsetFlag)) } config, v, err := getConfig() @@ -155,7 +145,12 @@ func run() func(*cobra.Command, []string) error { } } - return writeConfig(config, v, unsetKeyFn) + // TODO: show successful output + + err = writeConfig(config, v, unsetKeyFn) + if err != nil { + return err + } default: return cmd.Help() } @@ -256,3 +251,16 @@ func writeConfig( return nil } + +func newErr(flag string) error { + err := errors.NewError( + fmt.Sprintf( + `{ + "message": "%s is not a valid configuration option" + }`, + flag, + ), + ) + + return errors.NewError(output.CmdOutputError(flag, err)) +}