From 9bae5f8d197d46c5f901a6a224d29309db73eb0d Mon Sep 17 00:00:00 2001 From: Philippe Ballandras Date: Tue, 28 Feb 2023 14:32:59 +0100 Subject: [PATCH] Fix long short flags and test (#6) --- parser.go | 7 ++++++- parser_test.go | 11 +++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) 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) +}