cli: ensure that required flags are set (#8826)
parent
3f3bec45fa
commit
a153ec5951
|
@ -32,17 +32,17 @@ fn main() {
|
||||||
description: 'Number of times the message gets printed.'
|
description: 'Number of times the message gets printed.'
|
||||||
})
|
})
|
||||||
greet_cmd.add_flag(Flag{
|
greet_cmd.add_flag(Flag{
|
||||||
flag: .string
|
flag: .string
|
||||||
name: 'fun'
|
name: 'fun'
|
||||||
multiple: true
|
multiple: true
|
||||||
description: 'Just a dumby flags to show multiple.'
|
description: 'Just a dumby flags to show multiple.'
|
||||||
})
|
})
|
||||||
cmd.add_command(greet_cmd)
|
cmd.add_command(greet_cmd)
|
||||||
cmd.setup()
|
cmd.setup()
|
||||||
cmd.parse(os.args)
|
cmd.parse(os.args)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn greet_func(cmd Command) {
|
fn greet_func(cmd Command) ? {
|
||||||
language := cmd.flags.get_string('language') or {
|
language := cmd.flags.get_string('language') or {
|
||||||
panic('Failed to get `language` flag: $err')
|
panic('Failed to get `language` flag: $err')
|
||||||
}
|
}
|
||||||
|
@ -76,10 +76,10 @@ fn greet_func(cmd Command) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn greet_pre_func(cmd Command) {
|
fn greet_pre_func(cmd Command) ? {
|
||||||
println('This is a function running before the main function.\n')
|
println('This is a function running before the main function.\n')
|
||||||
}
|
}
|
||||||
|
|
||||||
fn greet_post_func(cmd Command) {
|
fn greet_post_func(cmd Command) ? {
|
||||||
println('\nThis is a function running after the main function.')
|
println('\nThis is a function running after the main function.')
|
||||||
}
|
}
|
||||||
|
|
|
@ -267,7 +267,7 @@ fn (cmd Command) check_version_flag() {
|
||||||
|
|
||||||
fn (cmd Command) check_required_flags() {
|
fn (cmd Command) check_required_flags() {
|
||||||
for flag in cmd.flags {
|
for flag in cmd.flags {
|
||||||
if flag.required && flag.value.len > 0 {
|
if flag.required && flag.value.len == 0 {
|
||||||
full_name := cmd.full_name()
|
full_name := cmd.full_name()
|
||||||
println('Flag `$flag.name` is required by `$full_name`')
|
println('Flag `$flag.name` is required by `$full_name`')
|
||||||
exit(1)
|
exit(1)
|
||||||
|
|
|
@ -117,6 +117,23 @@ fn test_if_multiple_flags_get_set() {
|
||||||
cmd.parse(['command', '-flag', 'value', '-value', '42'])
|
cmd.parse(['command', '-flag', 'value', '-value', '42'])
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn test_if_required_flags_get_set() {
|
||||||
|
mut cmd := cli.Command{
|
||||||
|
name: 'command'
|
||||||
|
execute: flag_should_have_value_of_42
|
||||||
|
}
|
||||||
|
cmd.add_flag(cli.Flag{
|
||||||
|
flag: .string
|
||||||
|
name: 'flag'
|
||||||
|
})
|
||||||
|
cmd.add_flag(cli.Flag{
|
||||||
|
flag: .int
|
||||||
|
name: 'value'
|
||||||
|
required: true
|
||||||
|
})
|
||||||
|
cmd.parse(['command', '-flag', 'value', '-value', '42'])
|
||||||
|
}
|
||||||
|
|
||||||
fn flag_is_set_in_subcommand(cmd cli.Command) ? {
|
fn flag_is_set_in_subcommand(cmd cli.Command) ? {
|
||||||
flag := cmd.flags.get_string('flag') or { panic(err) }
|
flag := cmd.flags.get_string('flag') or { panic(err) }
|
||||||
assert flag == 'value'
|
assert flag == 'value'
|
||||||
|
|
Loading…
Reference in New Issue