cmd: improve command usage strings
the command usage strings now use the actual argument values provided by the user, in particular for the names of relevant commands
This commit is contained in:
@@ -229,6 +229,8 @@ static b_status parse_arg(struct argv_parser *parser)
|
||||
= b_command_get_subcommand_with_name(parser->cmd, value);
|
||||
if (subcmd) {
|
||||
move_to_subcommand(parser, subcmd);
|
||||
parser->arglist->list_argv_last_command
|
||||
= parser->index + 1;
|
||||
advance(parser);
|
||||
continue;
|
||||
}
|
||||
@@ -309,13 +311,15 @@ static b_status parse_short_opt(struct argv_parser *parser)
|
||||
|
||||
if (subcmd) {
|
||||
move_to_subcommand(parser, subcmd);
|
||||
parser->arglist->list_argv_last_command
|
||||
= parser->index + 1;
|
||||
flags++;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!opt) {
|
||||
struct b_string *usage = z__b_command_default_usage_string(
|
||||
parser->cmd, NULL);
|
||||
parser->cmd, NULL, parser->arglist);
|
||||
b_err("unrecognised argument '" F_YELLOW "-%c" F_RESET
|
||||
"'\n\n",
|
||||
flag, b_string_ptr(usage));
|
||||
@@ -452,8 +456,8 @@ static b_status parse_long_opt(struct argv_parser *parser)
|
||||
}
|
||||
|
||||
if (!opt && !subcmd) {
|
||||
struct b_string *usage
|
||||
= z__b_command_default_usage_string(parser->cmd, NULL);
|
||||
struct b_string *usage = z__b_command_default_usage_string(
|
||||
parser->cmd, NULL, parser->arglist);
|
||||
b_err("unrecognised argument '" F_YELLOW "--%s" F_RESET
|
||||
"'\n\nusage: %s\n\nfor more information, use '" F_YELLOW
|
||||
"--help" F_RESET "'\n",
|
||||
@@ -466,7 +470,8 @@ static b_status parse_long_opt(struct argv_parser *parser)
|
||||
advance(parser);
|
||||
|
||||
if (subcmd) {
|
||||
parser->cmd = subcmd;
|
||||
move_to_subcommand(parser, subcmd);
|
||||
parser->arglist->list_argv_last_command = parser->index + 1;
|
||||
return B_SUCCESS;
|
||||
}
|
||||
|
||||
@@ -591,8 +596,11 @@ static bool should_show_help(struct b_command *cmd, struct b_arglist *args)
|
||||
b_status b_arglist_parse(
|
||||
struct b_arglist *args, struct b_command **cmd, int argc, const char **argv)
|
||||
{
|
||||
struct argv_parser parser
|
||||
= {.arglist = args, .argc = argc - 1, .argv = argv + 1};
|
||||
struct argv_parser parser = {
|
||||
.arglist = args,
|
||||
.argc = argc - 1,
|
||||
.argv = argv + 1,
|
||||
};
|
||||
|
||||
move_to_subcommand(&parser, *cmd);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user