Skip to content

Commit b668267

Browse files
fixing flag parsing error handling (#266)
1 parent 35c7460 commit b668267

6 files changed

Lines changed: 20 additions & 16 deletions

File tree

cli.go

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -159,14 +159,11 @@ func runCLI(args []string) int {
159159
case exists:
160160
return cmdFunc()
161161
default:
162-
errMessage := styling.ErrorBorder.Render(
163-
styling.ErrorColor.Render("✖ Error!"),
164-
fmt.Sprintf("\n\t%-15s", fmt.Sprintf("'%s' is not a valid command.\n", cmdArg)),
165-
styling.StyleBold.Render("\nCommands:"),
166-
renderCommandList(),
167-
fmt.Sprintf("\n\nAlso run %s for more info!", styling.StyleBold.Render("poke-cli -h")),
168-
)
169-
output.WriteString(errMessage)
162+
msg := fmt.Sprintf("\t%-15s", fmt.Sprintf("'%s' is not a valid command.\n", cmdArg)) +
163+
styling.StyleBold.Render("\nCommands:") +
164+
renderCommandList() +
165+
fmt.Sprintf("\n\nAlso run %s for more info!", styling.StyleBold.Render("poke-cli -h"))
166+
output.WriteString(utils.FormatError(msg))
170167

171168
fmt.Println(output.String())
172169

cmd/ability/ability.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package ability
22

33
import (
4+
"errors"
45
"flag"
56
"fmt"
67
"os"
@@ -48,9 +49,10 @@ func AbilityCommand() (string, error) {
4849
abilityName := strings.ToLower(args[2])
4950

5051
if err := af.FlagSet.Parse(args[3:]); err != nil {
52+
if errors.Is(err, flag.ErrHelp) {
53+
return output.String(), nil
54+
}
5155
fmt.Fprintf(&output, "error parsing flags: %v\n", err)
52-
af.FlagSet.Usage()
53-
5456
return output.String(), err
5557
}
5658

cmd/pokemon/pokemon.go

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package pokemon
22

33
import (
44
"bytes"
5+
"errors"
56
"flag"
67
"fmt"
78
"io"
@@ -61,8 +62,10 @@ func PokemonCommand() (string, error) {
6162
pokemonName := strings.ToLower(args[2])
6263

6364
if err := pf.FlagSet.Parse(args[3:]); err != nil {
64-
fmt.Printf("error parsing flags: %v\n", err)
65-
pf.FlagSet.Usage()
65+
if errors.Is(err, flag.ErrHelp) {
66+
return output.String(), nil
67+
}
68+
fmt.Fprintf(&output, "error parsing flags: %v\n", err)
6669
return output.String(), err
6770
}
6871

cmd/tcg/tcg.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package tcg
22

33
import (
4+
"errors"
45
"flag"
56
"fmt"
67
"os"
@@ -33,15 +34,16 @@ func TcgCommand() (string, error) {
3334
return output.String(), nil
3435
}
3536

36-
flag.Parse()
37-
3837
if err := utils.ValidateArgs(os.Args, utils.Validator{MaxArgs: 3, CmdName: "tcg", RequireName: false, HasFlags: true}); err != nil {
3938
output.WriteString(err.Error())
4039
return output.String(), err
4140
}
4241

4342
tf := flags.SetupTcgFlagSet()
4443
if err := tf.FlagSet.Parse(os.Args[2:]); err != nil {
44+
if errors.Is(err, flag.ErrHelp) {
45+
return output.String(), nil
46+
}
4547
fmt.Fprintf(&output, "error parsing flags: %v\n", err)
4648
return output.String(), err
4749
}

flags/abilityflagset.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ type AbilityFlags struct {
2020

2121
func SetupAbilityFlagSet() *AbilityFlags {
2222
af := &AbilityFlags{}
23-
af.FlagSet = flag.NewFlagSet("abilityFlags", flag.ExitOnError)
23+
af.FlagSet = flag.NewFlagSet("abilityFlags", flag.ContinueOnError)
2424

2525
af.Pokemon = af.FlagSet.Bool("pokemon", false, "List all Pokémon with chosen ability")
2626
af.ShortPokemon = af.FlagSet.Bool("p", false, "List all Pokémon with chosen ability")

flags/pokemonflagset.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ func header(header string) string {
5959

6060
func SetupPokemonFlagSet() *PokemonFlags {
6161
pf := &PokemonFlags{}
62-
pf.FlagSet = flag.NewFlagSet("pokeFlags", flag.ExitOnError)
62+
pf.FlagSet = flag.NewFlagSet("pokeFlags", flag.ContinueOnError)
6363

6464
pf.Abilities = pf.FlagSet.Bool("abilities", false, "Print the Pokémon's abilities")
6565
pf.ShortAbilities = pf.FlagSet.Bool("a", false, "Print the Pokémon's abilities")

0 commit comments

Comments
 (0)