degesch: split handle_command_help()
This commit is contained in:
parent
f907f1e3dc
commit
1ba6db50b6
61
degesch.c
61
degesch.c
|
@ -7494,43 +7494,50 @@ try_handle_command_help_option (struct app_context *ctx, const char *name)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bool
|
||||||
|
show_command_list (struct app_context *ctx)
|
||||||
|
{
|
||||||
|
log_global_indent (ctx, "");
|
||||||
|
log_global_indent (ctx, "Commands:");
|
||||||
|
|
||||||
|
int longest = 0;
|
||||||
|
for (size_t i = 0; i < N_ELEMENTS (g_command_handlers); i++)
|
||||||
|
{
|
||||||
|
int len = strlen (g_command_handlers[i].name);
|
||||||
|
longest = MAX (longest, len);
|
||||||
|
}
|
||||||
|
for (size_t i = 0; i < N_ELEMENTS (g_command_handlers); i++)
|
||||||
|
{
|
||||||
|
struct command_handler *handler = &g_command_handlers[i];
|
||||||
|
log_global_indent (ctx, " #&s", xstrdup_printf
|
||||||
|
("%-*s %s", longest, handler->name, handler->description));
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool
|
||||||
|
show_command_help (struct app_context *ctx, struct command_handler *handler)
|
||||||
|
{
|
||||||
|
log_global_indent (ctx, "");
|
||||||
|
log_global_indent (ctx, "#s: #s", handler->name, handler->description);
|
||||||
|
log_global_indent (ctx, " Arguments: #s",
|
||||||
|
handler->usage ? handler->usage : "(none)");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
static bool
|
static bool
|
||||||
handle_command_help (struct handler_args *a)
|
handle_command_help (struct handler_args *a)
|
||||||
{
|
{
|
||||||
struct app_context *ctx = a->ctx;
|
struct app_context *ctx = a->ctx;
|
||||||
if (!*a->arguments)
|
if (!*a->arguments)
|
||||||
{
|
return show_command_list (ctx);
|
||||||
log_global_indent (ctx, "");
|
|
||||||
log_global_indent (ctx, "Commands:");
|
|
||||||
|
|
||||||
int longest = 0;
|
|
||||||
for (size_t i = 0; i < N_ELEMENTS (g_command_handlers); i++)
|
|
||||||
{
|
|
||||||
int len = strlen (g_command_handlers[i].name);
|
|
||||||
longest = MAX (longest, len);
|
|
||||||
}
|
|
||||||
for (size_t i = 0; i < N_ELEMENTS (g_command_handlers); i++)
|
|
||||||
{
|
|
||||||
struct command_handler *handler = &g_command_handlers[i];
|
|
||||||
log_global_indent (ctx, " #&s", xstrdup_printf
|
|
||||||
("%-*s %s", longest, handler->name, handler->description));
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
char *command = cut_word (&a->arguments);
|
char *command = cut_word (&a->arguments);
|
||||||
for (size_t i = 0; i < N_ELEMENTS (g_command_handlers); i++)
|
for (size_t i = 0; i < N_ELEMENTS (g_command_handlers); i++)
|
||||||
{
|
{
|
||||||
struct command_handler *handler = &g_command_handlers[i];
|
struct command_handler *handler = &g_command_handlers[i];
|
||||||
if (strcasecmp_ascii (command, handler->name))
|
if (!strcasecmp_ascii (command, handler->name))
|
||||||
continue;
|
return show_command_help (ctx, handler);
|
||||||
|
|
||||||
log_global_indent (ctx, "");
|
|
||||||
log_global_indent (ctx, "#s: #s",
|
|
||||||
handler->name, handler->description);
|
|
||||||
log_global_indent (ctx, " Arguments: #s",
|
|
||||||
handler->usage ? handler->usage : "(none)");
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!try_handle_command_help_option (ctx, command))
|
if (!try_handle_command_help_option (ctx, command))
|
||||||
|
|
Loading…
Reference in New Issue