Skip to content

Commit

Permalink
Do not show type for call errors
Browse files Browse the repository at this point in the history
Fixes #337.
  • Loading branch information
jessevdk committed Mar 21, 2021
1 parent 6a6df1b commit daf243b
Showing 1 changed file with 27 additions and 8 deletions.
35 changes: 27 additions & 8 deletions parser.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import (
"fmt"
"os"
"path"
"reflect"
"sort"
"strings"
"unicode/utf8"
Expand Down Expand Up @@ -317,10 +318,7 @@ func (p *Parser) ParseArgs(args []string) ([]string, error) {
err := option.clearDefault()
if err != nil {
if _, ok := err.(*Error); !ok {
err = newErrorf(ErrMarshal, "invalid argument for flag `%s' (expected %s): %s",
option,
option.value.Type(),
err.Error())
err = p.marshalError(option, err)
}
s.err = err
}
Expand Down Expand Up @@ -571,16 +569,37 @@ func (p *Parser) parseOption(s *parseState, name string, option *Option, canarg

if err != nil {
if _, ok := err.(*Error); !ok {
err = newErrorf(ErrMarshal, "invalid argument for flag `%s' (expected %s): %s",
option,
option.value.Type(),
err.Error())
err = p.marshalError(option, err)
}
}

return err
}

func (p *Parser) marshalError(option *Option, err error) *Error {
s := "invalid argument for flag `%s'"

expected := p.expectedType(option)

if expected != "" {
s = s + " (expected " + expected + ")"
}

return newErrorf(ErrMarshal, s+": %s",
option,
err.Error())
}

func (p *Parser) expectedType(option *Option) string {
valueType := option.value.Type()

if valueType.Kind() == reflect.Func {
return ""
}

return valueType.String()
}

func (p *Parser) parseLong(s *parseState, name string, argument *string) error {
if option := s.lookup.longNames[name]; option != nil {
// Only long options that are required can consume an argument
Expand Down

0 comments on commit daf243b

Please sign in to comment.