cli: fix bug that caused help to panic (#11157)
parent
12fb4655f5
commit
9c74fb0449
|
@ -78,7 +78,9 @@ fn (cmd Command) help_message() string {
|
|||
mut name_len := cli.min_description_indent_len
|
||||
if cmd.posix_mode {
|
||||
for flag in cmd.flags {
|
||||
if flag.abbrev != '' {
|
||||
abbrev_len = max(abbrev_len, flag.abbrev.len + cli.spacing + 1) // + 1 for '-' in front
|
||||
}
|
||||
name_len = max(name_len, abbrev_len + flag.name.len + cli.spacing + 2) // + 2 for '--' in front
|
||||
}
|
||||
for command in cmd.commands {
|
||||
|
@ -86,6 +88,9 @@ fn (cmd Command) help_message() string {
|
|||
}
|
||||
} else {
|
||||
for flag in cmd.flags {
|
||||
if flag.abbrev != '' {
|
||||
abbrev_len = max(abbrev_len, flag.abbrev.len + cli.spacing + 1) // + 1 for '-' in front
|
||||
}
|
||||
name_len = max(name_len, abbrev_len + flag.name.len + cli.spacing + 1) // + 1 for '-' in front
|
||||
}
|
||||
for command in cmd.commands {
|
||||
|
|
|
@ -0,0 +1,65 @@
|
|||
module cli
|
||||
|
||||
fn test_help_message() {
|
||||
mut cmd := Command{
|
||||
name: 'command'
|
||||
description: 'description'
|
||||
commands: [
|
||||
Command{
|
||||
name: 'sub'
|
||||
description: 'subcommand'
|
||||
},
|
||||
Command{
|
||||
name: 'sub2'
|
||||
description: 'another subcommand'
|
||||
},
|
||||
]
|
||||
flags: [
|
||||
Flag{
|
||||
flag: .string
|
||||
name: 'str'
|
||||
description: 'str flag'
|
||||
},
|
||||
Flag{
|
||||
flag: .bool
|
||||
name: 'bool'
|
||||
description: 'bool flag'
|
||||
abbrev: 'b'
|
||||
},
|
||||
Flag{
|
||||
flag: .string
|
||||
name: 'required'
|
||||
abbrev: 'r'
|
||||
required: true
|
||||
},
|
||||
]
|
||||
}
|
||||
assert cmd.help_message() == r'Usage: command [flags] [commands]
|
||||
|
||||
description
|
||||
|
||||
Flags:
|
||||
-str str flag
|
||||
-b -bool bool flag
|
||||
-r -required (required)
|
||||
|
||||
Commands:
|
||||
sub subcommand
|
||||
sub2 another subcommand
|
||||
'
|
||||
|
||||
cmd.posix_mode = true
|
||||
assert cmd.help_message() == r'Usage: command [flags] [commands]
|
||||
|
||||
description
|
||||
|
||||
Flags:
|
||||
--str str flag
|
||||
-b --bool bool flag
|
||||
-r --required (required)
|
||||
|
||||
Commands:
|
||||
sub subcommand
|
||||
sub2 another subcommand
|
||||
'
|
||||
}
|
Loading…
Reference in New Issue