summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Flint <[email protected]>2019-10-05 09:26:10 -0700
committerGitHub <[email protected]>2019-10-05 09:26:10 -0700
commit873f3c2cf4ec11ac4cab84a6ebaf61f695ab8b68 (patch)
tree293abbfa301e5203ed2de5eb5d2e377f9e7de0db
parent8baf7040d76473dd1d78c17b490d9d8cf6b1c584 (diff)
parent233d378a5092a5c64c17f2ed9078dca9c09fcd47 (diff)
Merge pull request #90 from alexflint/fix-89
Multiple args are terminated by "--"
-rw-r--r--parse.go2
-rw-r--r--parse_test.go12
2 files changed, 13 insertions, 1 deletions
diff --git a/parse.go b/parse.go
index 2a6b7c7..a29258a 100644
--- a/parse.go
+++ b/parse.go
@@ -502,7 +502,7 @@ func (p *Parser) process(args []string) error {
if spec.multiple {
var values []string
if value == "" {
- for i+1 < len(args) && !isFlag(args[i+1]) {
+ for i+1 < len(args) && !isFlag(args[i+1]) && args[i+1] != "--" {
values = append(values, args[i+1])
i++
if spec.separate {
diff --git a/parse_test.go b/parse_test.go
index 882564e..5909472 100644
--- a/parse_test.go
+++ b/parse_test.go
@@ -1045,3 +1045,15 @@ func TestVersion(t *testing.T) {
assert.Equal(t, ErrVersion, err)
}
+
+func TestMultipleTerminates(t *testing.T) {
+ var args struct {
+ X []string
+ Y string `arg:"positional"`
+ }
+
+ err := parse("--x a b -- c", &args)
+ require.NoError(t, err)
+ assert.Equal(t, []string{"a", "b"}, args.X)
+ assert.Equal(t, "c", args.Y)
+}