diff --git a/kong_test.go b/kong_test.go index f767a03..0e0c064 100644 --- a/kong_test.go +++ b/kong_test.go @@ -697,3 +697,13 @@ func TestNumericParamErrors(t *testing.T) { _, err := parser.Parse([]string{"--name", "-10"}) require.EqualError(t, err, `expected string value but got "-10" (short flag)`) } + +func TestDefaultValueIsHyphen(t *testing.T) { + var cli struct { + Flag string `default:"-"` + } + p := mustNew(t, &cli) + _, err := p.Parse(nil) + require.NoError(t, err) + require.Equal(t, "-", cli.Flag) +} diff --git a/model.go b/model.go index fa6fa0c..761a022 100644 --- a/model.go +++ b/model.go @@ -302,7 +302,7 @@ func (v *Value) Reset() error { if v.Tag.Env != "" { envar := os.Getenv(v.Tag.Env) if envar != "" { - err := v.Parse(Scan(envar), v.Target) + err := v.Parse(ScanFromTokens(Token{Type: FlagValueToken, Value: envar}), v.Target) if err != nil { return fmt.Errorf("%s (from envar %s=%q)", err, v.Tag.Env, envar) } @@ -310,7 +310,7 @@ func (v *Value) Reset() error { } } if v.Default != "" { - return v.Parse(Scan(v.Default), v.Target) + return v.Parse(ScanFromTokens(Token{Type: FlagValueToken, Value: v.Default}), v.Target) } return nil }