diff --git a/parser.go b/parser.go index a97245c..08b7cb8 100644 --- a/parser.go +++ b/parser.go @@ -193,7 +193,12 @@ func (p *ParseContext) Next() *Token { } if strings.HasPrefix(arg, "--") || (strings.HasPrefix(arg, "-") && strings.Count(arg, "-") > 1) { - parts := strings.SplitN(arg[2:], "=", 2) + var parts []string + if strings.HasPrefix(arg, "--") { + parts = strings.SplitN(arg[2:], "=", 2) + } else { + parts = strings.SplitN(arg[1:], "=", 2) + } token := &Token{p.argi, TokenLong, parts[0]} if len(parts) == 2 { p.Push(&Token{p.argi, TokenArg, parts[1]}) diff --git a/parser_test.go b/parser_test.go index d2462e7..0167a89 100644 --- a/parser_test.go +++ b/parser_test.go @@ -173,3 +173,14 @@ func TestAppParseUnmanagedVarWithTwoManagedFlags(t *testing.T) { assert.Nil(t, err) assert.Equal(t, []string{"-var"}, app.Unmanaged) } + +func TestAppParseShortLongFlags(t *testing.T) { + app := New("test", "") + app.allowUnmanaged = true + app.Command("foo", "") + app.Flag("verbose-level", "").Short('v').Bool() + + ctx, err := app.ParseContext([]string{"foo", "-verbose-level"}) + assert.Nil(t, err) + assert.Len(t, ctx.Elements, 2) +}