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 { | ||||
| 			abbrev_len = max(abbrev_len, flag.abbrev.len + cli.spacing + 1) // + 1 for '-' in front
 | ||||
| 			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