Skip to content

Commit

Permalink
flag: include args after end-of-options(--) when checking min and m…
Browse files Browse the repository at this point in the history
…ax args (#21310)
  • Loading branch information
ttytm committed Apr 19, 2024
1 parent 39e550f commit 9fb9443
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 9 deletions.
12 changes: 3 additions & 9 deletions vlib/flag/flag.v
Expand Up @@ -607,25 +607,19 @@ pub fn (mut fs FlagParser) finalize() ![]string {
}
}
}
if remaining.len < fs.min_free_args && fs.min_free_args > 0 {
remaining << fs.all_after_dashdash
if fs.min_free_args > remaining.len {
return &ArgsCountError{
want: fs.min_free_args
got: remaining.len
}
}
if remaining.len > fs.max_free_args && fs.max_free_args > 0 {
if fs.max_free_args < remaining.len {
return &ArgsCountError{
want: fs.max_free_args
got: remaining.len
}
}
if remaining.len > 0 && fs.max_free_args == 0 && fs.min_free_args == 0 {
return &ArgsCountError{
want: 0
got: remaining.len
}
}
remaining << fs.all_after_dashdash
return remaining
}

Expand Down
8 changes: 8 additions & 0 deletions vlib/flag/flag_test.v
Expand Up @@ -204,6 +204,14 @@ fn test_free_args_could_be_limited() {
assert args[0] == 'a'
assert args[1] == 'b'
assert args[2] == 'c'

mut fp2 := flag.new_flag_parser(['--', 'a'])
fp2.limit_free_args_to_at_least(1)!
args2 := fp2.finalize() or {
assert false
return
}
assert args2[0] == 'a'
}

fn test_error_for_to_few_free_args() {
Expand Down

0 comments on commit 9fb9443

Please sign in to comment.