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) }