1
0
mirror of https://github.com/vlang/v.git synced 2023-08-10 21:13:21 +03:00

cli: have a posix mode to handle -- (#11133)

This commit is contained in:
div72
2021-08-11 12:26:17 +03:00
committed by GitHub
parent 18be9e52be
commit 8c2f7901aa
4 changed files with 21 additions and 33 deletions

View File

@ -211,8 +211,8 @@ pub fn (flags []Flag) get_strings(name string) ?[]string {
// parse parses flag values from arguments and return
// an array of arguments with all consumed elements removed.
fn (mut flag Flag) parse(args []string, with_abbrev bool) ?[]string {
if flag.matches(args, with_abbrev) {
fn (mut flag Flag) parse(args []string, posix_mode bool) ?[]string {
if flag.matches(args, posix_mode) {
if flag.flag == .bool {
new_args := flag.parse_bool(args) ?
return new_args
@ -231,16 +231,12 @@ fn (mut flag Flag) parse(args []string, with_abbrev bool) ?[]string {
}
// matches returns `true` if first arg in `args` matches this flag.
fn (mut flag Flag) matches(args []string, with_abbrev bool) bool {
if with_abbrev {
return (flag.name != '' && args[0] == '--$flag.name')
|| (flag.name != '' && args[0].starts_with('--$flag.name='))
|| (flag.abbrev != '' && args[0] == '-$flag.abbrev')
|| (flag.abbrev != '' && args[0].starts_with('-$flag.abbrev='))
} else {
return (flag.name != '' && args[0] == '-$flag.name')
|| (flag.name != '' && args[0].starts_with('-$flag.name='))
}
fn (mut flag Flag) matches(args []string, posix_mode bool) bool {
prefix := if posix_mode { '--' } else { '-' }
return (flag.name != '' && args[0] == '$prefix$flag.name')
|| (flag.name != '' && args[0].starts_with('$prefix$flag.name='))
|| (flag.abbrev != '' && args[0] == '-$flag.abbrev')
|| (flag.abbrev != '' && args[0].starts_with('-$flag.abbrev='))
}
fn (mut flag Flag) parse_raw(args []string) ?[]string {
@ -289,16 +285,6 @@ fn (flags []Flag) contains(name string) bool {
return false
}
fn (flags []Flag) have_abbrev() bool {
mut have_abbrev := false
for flag in flags {
if flag.abbrev != '' {
have_abbrev = true
}
}
return have_abbrev
}
// Check if value is set by command line option. If not, return default value.
fn (flag Flag) get_value_or_default_value() []string {
if flag.value.len == 0 && flag.default_value.len > 0 {