helpful error message when flag is missing values (#310)

Fixes #277
This commit is contained in:
pyq-lsa
2022-06-11 14:29:19 -07:00
committed by GitHub
parent 9d72e94240
commit edc47ebc34
2 changed files with 106 additions and 6 deletions
+6 -6
View File
@@ -439,17 +439,17 @@ func mapDecoder(r *Registry) MapperFunc {
target.Set(reflect.MakeMap(target.Type()))
}
el := target.Type()
sep := ctx.Value.Tag.MapSep
mapsep := ctx.Value.Tag.MapSep
var childScanner *Scanner
if ctx.Value.Flag != nil {
t := ctx.Scan.Pop()
// If decoding a flag, we need an argument.
// If decoding a flag, we need an value.
if t.IsEOL() {
return errors.New("unexpected EOL")
return fmt.Errorf("missing value, expecting \"<key>=<value>%c...\"", mapsep)
}
switch v := t.Value.(type) {
case string:
childScanner = ScanAsType(t.Type, SplitEscaped(v, sep)...)
childScanner = ScanAsType(t.Type, SplitEscaped(v, mapsep)...)
case []map[string]interface{}:
for _, m := range v {
@@ -518,9 +518,9 @@ func sliceDecoder(r *Registry) MapperFunc {
var childScanner *Scanner
if ctx.Value.Flag != nil {
t := ctx.Scan.Pop()
// If decoding a flag, we need an argument.
// If decoding a flag, we need an value.
if t.IsEOL() {
return errors.New("unexpected EOL")
return fmt.Errorf("missing value, expecting \"<arg>%c...\"", sep)
}
switch v := t.Value.(type) {
case string: