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
|
mut name_len := cli.min_description_indent_len
|
||||||
if cmd.posix_mode {
|
if cmd.posix_mode {
|
||||||
for flag in cmd.flags {
|
for flag in cmd.flags {
|
||||||
|
if flag.abbrev != '' {
|
||||||
abbrev_len = max(abbrev_len, flag.abbrev.len + cli.spacing + 1) // + 1 for '-' in front
|
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
|
name_len = max(name_len, abbrev_len + flag.name.len + cli.spacing + 2) // + 2 for '--' in front
|
||||||
}
|
}
|
||||||
for command in cmd.commands {
|
for command in cmd.commands {
|
||||||
|
@ -86,6 +88,9 @@ fn (cmd Command) help_message() string {
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
for flag in cmd.flags {
|
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
|
name_len = max(name_len, abbrev_len + flag.name.len + cli.spacing + 1) // + 1 for '-' in front
|
||||||
}
|
}
|
||||||
for command in cmd.commands {
|
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