From 4b5c4706cb30fb09b549818cbabeac60df2dc3cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9=20=D0=91=D0=B0?= =?UTF-8?q?=D0=B4=D1=8F=D0=B5=D0=B2?= Date: Tue, 22 Oct 2024 23:28:56 +0700 Subject: [PATCH] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=20=D0=BC=D0=B5=D1=82=D0=BE=D0=B4=20=D0=B7=D0=B0?= =?UTF-8?q?=D1=85=D0=B2=D0=B0=D1=82=D0=B0=20=D0=B0=D1=80=D0=B3=D1=83=D0=BC?= =?UTF-8?q?=D0=B5=D0=BD=D1=82=D0=BE=D0=B2=20CLI.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cli.go | 5 +++-- cli_test.go | 18 ++++++++++++++++++ 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/cli.go b/cli.go index 3e251a4..e668955 100644 --- a/cli.go +++ b/cli.go @@ -228,10 +228,11 @@ func (c *Command) Capture(args []string) []string { } name := strings.TrimPrefix(strings.TrimPrefix(arg, "-"), "-") + parts := strings.Split(name, "=") - if c.FlagSet.Lookup(name) != nil { + if c.FlagSet.Lookup(parts[0]) != nil { c.Args = append(c.Args, arg) - expectValue = true + expectValue = len(parts) == 1 } else { result = append(result, arg) } diff --git a/cli_test.go b/cli_test.go index ba6e4d1..40cf3e7 100644 --- a/cli_test.go +++ b/cli_test.go @@ -280,4 +280,22 @@ func TestDuration(t *testing.T) { assert.ElementsMatch([]string{"-v", "help"}, cmd.Capture(args)) assert.ElementsMatch([]string{"--interval", "5s"}, cmd.Args) assert.NoError(cmd.Parse(cmd.Args)) + assert.Equal(time.Second*5, conf.interval) +} + +func TestDurationWithEqual(t *testing.T) { + assert := assert.New(t) + var conf struct { + interval time.Duration `cli:"interval" usage:"interval"` + } + + cmd := NewCLI("Config") + assert.NoError(cmd.Init(&conf), "init config command") + + args := []string{"-v", "--interval=5s", "help"} + + assert.ElementsMatch([]string{"-v", "help"}, cmd.Capture(args)) + assert.ElementsMatch([]string{"--interval=5s"}, cmd.Args) + assert.NoError(cmd.Parse(cmd.Args)) + assert.Equal(time.Second*5, conf.interval) }