84 lines
1.7 KiB
V
84 lines
1.7 KiB
V
module cmdline
|
|
|
|
// Fetch multiple option by param, e.g.
|
|
// args: ['v', '-d', 'aa', '-d', 'bb', '-d', 'cc']
|
|
// param: '-d'
|
|
// ret: ['aa', 'bb', 'cc']
|
|
pub fn options(args []string, param string) []string {
|
|
mut flags := []string{}
|
|
for i, v in args {
|
|
if v == param {
|
|
if i + 1 < args.len {
|
|
flags << args[i + 1]
|
|
}
|
|
}
|
|
}
|
|
return flags
|
|
}
|
|
|
|
// Fetch option by param, e.g.
|
|
// args: ['v', '-d', 'aa']
|
|
// param: '-d'
|
|
// def: ''
|
|
// ret: 'aa'
|
|
pub fn option(args []string, param string, def string) string {
|
|
mut found := false
|
|
for arg in args {
|
|
if found {
|
|
return arg
|
|
}
|
|
else if param == arg {
|
|
found = true
|
|
}
|
|
}
|
|
return def
|
|
}
|
|
|
|
// Fetch all options before what params, e.g.
|
|
// args: ['-stat', 'test', 'aaa.v']
|
|
// what: ['test']
|
|
// ret: ['-stat']
|
|
pub fn options_before(args []string, what []string) []string {
|
|
mut args_before := []string{}
|
|
for a in args {
|
|
if a in what {
|
|
break
|
|
}
|
|
args_before << a
|
|
}
|
|
return args_before
|
|
}
|
|
|
|
// Fetch all options after what params, e.g.
|
|
// args: ['-stat', 'test', 'aaa.v']
|
|
// what: ['test']
|
|
// ret: ['aaa.v']
|
|
pub fn options_after(args []string, what []string) []string {
|
|
mut found := false
|
|
mut args_after := []string{}
|
|
for a in args {
|
|
if a in what {
|
|
found = true
|
|
continue
|
|
}
|
|
if found {
|
|
args_after << a
|
|
}
|
|
}
|
|
return args_after
|
|
}
|
|
|
|
// Fetch all options not start with '-', e.g.
|
|
// args: ['-d', 'aa', '--help', 'bb']
|
|
// ret: ['aa', 'bb']
|
|
pub fn only_non_options(args []string) []string {
|
|
return args.filter(!it.starts_with('-'))
|
|
}
|
|
|
|
// Fetch all options start with '-', e.g.
|
|
// args: ['-d', 'aa', '--help', 'bb']
|
|
// ret: ['-d', '--help']
|
|
pub fn only_options(args []string) []string {
|
|
return args.filter(it.starts_with('-'))
|
|
}
|