From ab4e2b0f1f162ee7b799bbb0b45bb27b58a6b414 Mon Sep 17 00:00:00 2001 From: Danny Olson Date: Wed, 15 May 2024 15:32:35 -0700 Subject: [PATCH 1/4] Show error with invalid config values --- cmd/config/config.go | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/cmd/config/config.go b/cmd/config/config.go index e797c7b3..7384af64 100644 --- a/cmd/config/config.go +++ b/cmd/config/config.go @@ -132,11 +132,10 @@ func run() func(*cobra.Command, []string) error { rawConfig, v, err := getRawConfig() if err != nil { - return err + return errors.NewError(output.CmdOutputError(viper.GetString(cliflags.OutputFlag), err)) } - // add arg pairs to config - // where each argument is --set arg1 val1 --set arg2 val2 + // add arg pairs to config where each argument is --set arg1 val1 --set arg2 val2 for i, a := range args { if i%2 == 0 { rawConfig[a] = struct{}{} @@ -151,10 +150,13 @@ func run() func(*cobra.Command, []string) error { configFile, err := config.NewConfig(rawConfig) if err != nil { - return errors.NewError(err.Error()) + return errors.NewError(output.CmdOutputError(viper.GetString(cliflags.OutputFlag), err)) } - return writeConfig(configFile, v, setKeyFn) + err = writeConfig(configFile, v, setKeyFn) + if err != nil { + return errors.NewError(output.CmdOutputError(viper.GetString(cliflags.OutputFlag), err)) + } case viper.IsSet(UnsetFlag): _, ok := cliflags.AllFlagsHelp()[viper.GetString(UnsetFlag)] if !ok { @@ -292,7 +294,7 @@ func newErr(flag string) error { ), ) - return errors.NewError(output.CmdOutputError(flag, err)) + return errors.NewError(output.CmdOutputError(viper.GetString(cliflags.OutputFlag), err)) } func writeAlphabetizedFlags(sb *strings.Builder) { From 54785db719af9fb950f8d4a97143eedece575c39 Mon Sep 17 00:00:00 2001 From: Danny Olson Date: Wed, 15 May 2024 15:54:42 -0700 Subject: [PATCH 2/4] Show success on config update --- cmd/config/config.go | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/cmd/config/config.go b/cmd/config/config.go index 7384af64..5da4dd56 100644 --- a/cmd/config/config.go +++ b/cmd/config/config.go @@ -136,27 +136,41 @@ func run() func(*cobra.Command, []string) error { } // add arg pairs to config where each argument is --set arg1 val1 --set arg2 val2 + newFields := make([]string, 0) for i, a := range args { if i%2 == 0 { rawConfig[a] = struct{}{} + newFields = append(newFields, a) } else { rawConfig[args[i-1]] = a } } - setKeyFn := func(key string, value interface{}, v *viper.Viper) { - v.Set(key, value) - } - configFile, err := config.NewConfig(rawConfig) if err != nil { return errors.NewError(output.CmdOutputError(viper.GetString(cliflags.OutputFlag), err)) } + setKeyFn := func(key string, value interface{}, v *viper.Viper) { + v.Set(key, value) + } err = writeConfig(configFile, v, setKeyFn) if err != nil { return errors.NewError(output.CmdOutputError(viper.GetString(cliflags.OutputFlag), err)) } + + fields := struct { + Items []string `json:"items"` + }{ + Items: newFields, + } + fieldsJSON, _ := json.Marshal(fields) + output, err := output.CmdOutput("update", viper.GetString(cliflags.OutputFlag), fieldsJSON) + if err != nil { + return errors.NewError(err.Error()) + } + + fmt.Fprintf(cmd.OutOrStdout(), output+"\n") case viper.IsSet(UnsetFlag): _, ok := cliflags.AllFlagsHelp()[viper.GetString(UnsetFlag)] if !ok { From 83e1d3c262267caa85a65b553aad5eb7b820cb85 Mon Sep 17 00:00:00 2001 From: Danny Olson Date: Wed, 15 May 2024 16:16:07 -0700 Subject: [PATCH 3/4] Show success message after unsetting a config field --- cmd/config/config.go | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/cmd/config/config.go b/cmd/config/config.go index 5da4dd56..97d9240e 100644 --- a/cmd/config/config.go +++ b/cmd/config/config.go @@ -179,7 +179,7 @@ func run() func(*cobra.Command, []string) error { config, v, err := getConfig() if err != nil { - return err + return errors.NewError(output.CmdOutputError(viper.GetString(cliflags.OutputFlag), err)) } unsetKeyFn := func(key string, value interface{}, v *viper.Viper) { @@ -187,13 +187,22 @@ func run() func(*cobra.Command, []string) error { v.Set(key, value) } } - - // TODO: show successful output - err = writeConfig(config, v, unsetKeyFn) if err != nil { - return err + return errors.NewError(output.CmdOutputError(viper.GetString(cliflags.OutputFlag), err)) } + + fields := struct { + Key string `json:"key"` + }{ + Key: viper.GetString(UnsetFlag), + } + fieldsJSON, _ := json.Marshal(fields) + output, err := output.CmdOutput("delete", viper.GetString(cliflags.OutputFlag), fieldsJSON) + if err != nil { + return errors.NewError(err.Error()) + } + fmt.Fprintf(cmd.OutOrStdout(), output+"\n") default: return cmd.Help() } From 537a2abec17ad980c4ddec4f1779d531c9c8b9b0 Mon Sep 17 00:00:00 2001 From: Danny Olson Date: Wed, 15 May 2024 16:21:09 -0700 Subject: [PATCH 4/4] Refactor --- cmd/config/config.go | 51 ++++++++++++++++++++++++++++++-------------- 1 file changed, 35 insertions(+), 16 deletions(-) diff --git a/cmd/config/config.go b/cmd/config/config.go index 97d9240e..2d764841 100644 --- a/cmd/config/config.go +++ b/cmd/config/config.go @@ -159,15 +159,9 @@ func run() func(*cobra.Command, []string) error { return errors.NewError(output.CmdOutputError(viper.GetString(cliflags.OutputFlag), err)) } - fields := struct { - Items []string `json:"items"` - }{ - Items: newFields, - } - fieldsJSON, _ := json.Marshal(fields) - output, err := output.CmdOutput("update", viper.GetString(cliflags.OutputFlag), fieldsJSON) + output, err := outputSetAction(newFields) if err != nil { - return errors.NewError(err.Error()) + return err } fmt.Fprintf(cmd.OutOrStdout(), output+"\n") @@ -192,16 +186,11 @@ func run() func(*cobra.Command, []string) error { return errors.NewError(output.CmdOutputError(viper.GetString(cliflags.OutputFlag), err)) } - fields := struct { - Key string `json:"key"` - }{ - Key: viper.GetString(UnsetFlag), - } - fieldsJSON, _ := json.Marshal(fields) - output, err := output.CmdOutput("delete", viper.GetString(cliflags.OutputFlag), fieldsJSON) + output, err := outputUnsetAction(viper.GetString(UnsetFlag)) if err != nil { - return errors.NewError(err.Error()) + return err } + fmt.Fprintf(cmd.OutOrStdout(), output+"\n") default: return cmd.Help() @@ -330,3 +319,33 @@ func writeAlphabetizedFlags(sb *strings.Builder) { sb.WriteString(fmt.Sprintf("- `%s`: %s\n", flag, cliflags.AllFlagsHelp()[flag])) } } + +func outputSetAction(newFields []string) (string, error) { + fields := struct { + Items []string `json:"items"` + }{ + Items: newFields, + } + fieldsJSON, _ := json.Marshal(fields) + output, err := output.CmdOutput("update", viper.GetString(cliflags.OutputFlag), fieldsJSON) + if err != nil { + return "", errors.NewError(err.Error()) + } + + return output, nil +} + +func outputUnsetAction(newField string) (string, error) { + field := struct { + Key string `json:"key"` + }{ + Key: newField, + } + fieldJSON, _ := json.Marshal(field) + output, err := output.CmdOutput("delete", viper.GetString(cliflags.OutputFlag), fieldJSON) + if err != nil { + return "", errors.NewError(err.Error()) + } + + return output, nil +}