diff --git a/cmd/config/config.go b/cmd/config/config.go index 5cb350ca..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,6 +129,11 @@ func run() func(*cobra.Command, []string) error { return writeConfig(configFile, v, setKeyFn) case viper.IsSet(UnsetFlag): + _, ok := cliflags.AllFlagsHelp()[viper.GetString(UnsetFlag)] + if !ok { + return newErr(viper.GetString(UnsetFlag)) + } + config, v, err := getConfig() if err != nil { return err @@ -133,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() } @@ -234,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)) +}