summaryrefslogtreecommitdiffstats
path: root/common
diff options
context:
space:
mode:
authorHolger Schurig <holgerschurig@gmail.com>2014-05-13 10:28:42 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2014-05-14 10:03:43 +0200
commitf1f532084a6e9ee8225f047353999b459455df7e (patch)
treef2b8b1f25c5c630209c6970e3a7ce57a3d55d367 /common
parentab23d0bb3f66cfb7a97a8aa6b8007687ed7a6925 (diff)
downloadbarebox-f1f532084a6e9ee8225f047353999b459455df7e.tar.gz
barebox-f1f532084a6e9ee8225f047353999b459455df7e.tar.xz
commands: harmonize in-barebox documentation
This patch does probably too much, but it's hard (and very cumbersome/time consuming) to break it out. What is does is this: * each command has one short description, e.g. "list MUX configuration" * made sure the short descriptions start lowercase * each command has one usage. That string contains just the options, e.g. "[-npn]". It's not part of the long help text. * that is, it doesn't say "[OPTIONS]" anymore, every usable option is listed by character in this (short) option string (the long description is in the long help text, as before) * help texts have been reworked, to make them - sometimes smaller - sometimes describe the options better - more often present themselves in a nicer format * all long help texts are now created with BUSYBOX_CMD_HELP_ macros, no more 'static const __maybe_unused char cmd_foobar_help[]' * made sure the long help texts starts uppercase * because cmdtp->name and cmdtp->opts together provide the new usage, all "Usage: foobar" texts have been removed from the long help texts * BUSYBOX_CMD_HELP_TEXT() provides the trailing newline by itself, this is nicer in the source code * BUSYBOX_CMD_HELP_OPT() provides the trailing newline by itself * made sure no line gets longer than 77 characters * delibertely renamed cmdtp->usage, so that we can get compile-time errors (e.g. in out-of-tree modules that use register_command() * the 'help' command can now always emit the usage, even without compiled long help texts * 'help -v' gives a list of commands with their short description, this is similar like the old "help" command before my patchset * 'help -a' gives out help of all commands Signed-off-by: Holger Schurig <holgerschurig@gmail.com> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'common')
-rw-r--r--common/command.c34
-rw-r--r--common/hush.c55
2 files changed, 36 insertions, 53 deletions
diff --git a/common/command.c b/common/command.c
index 7f2b777939..61191c2d62 100644
--- a/common/command.c
+++ b/common/command.c
@@ -36,22 +36,18 @@ EXPORT_SYMBOL(command_list);
void barebox_cmd_usage(struct command *cmdtp)
{
-#ifdef CONFIG_LONGHELP
- /* found - print (long) help info */
- if (cmdtp->help) {
- puts (cmdtp->help);
- } else {
- puts (cmdtp->name);
- putchar (' ');
- puts ("- No help available.\n");
- }
- putchar ('\n');
-#else /* no long help available */
- if (cmdtp->usage) {
- puts (cmdtp->usage);
- puts("\n");
- }
-#endif /* CONFIG_LONGHELP */
+ putchar('\n');
+ if (cmdtp->desc)
+ printf("%s - %s\n\n", cmdtp->name, cmdtp->desc);
+ if (cmdtp->opts)
+ printf("Usage: %s %s\n\n", cmdtp->name, cmdtp->opts);
+#ifdef CONFIG_LONGHELP
+ /* found - print (long) help info */
+ if (cmdtp->help) {
+ puts(cmdtp->help);
+ putchar('\n');
+ }
+#endif
}
EXPORT_SYMBOL(barebox_cmd_usage);
@@ -108,14 +104,13 @@ int register_command(struct command *cmd)
if (cmd->aliases) {
char **aliases = (char**)cmd->aliases;
while(*aliases) {
- char *usage = "alias for ";
struct command *c = xzalloc(sizeof(struct command));
memcpy(c, cmd, sizeof(struct command));
c->name = *aliases;
- c->usage = xmalloc(strlen(usage) + strlen(cmd->name) + 1);
- sprintf((char*)c->usage, "%s%s", usage, cmd->name);
+ c->desc = cmd->desc;
+ c->opts = cmd->opts;
c->aliases = NULL;
@@ -163,4 +158,3 @@ static int init_command_list(void)
}
late_initcall(init_command_list);
-
diff --git a/common/hush.c b/common/hush.c
index 5893c5129b..92f95766a7 100644
--- a/common/hush.c
+++ b/common/hush.c
@@ -1932,16 +1932,11 @@ static int do_sh(int argc, char *argv[])
return execute_script(argv[1], argc - 1, argv + 1);
}
-static const __maybe_unused char cmd_sh_help[] =
-"Usage: sh filename [arguments]\n"
-"\n"
-"Execute a shell script\n";
-
BAREBOX_CMD_START(sh)
.cmd = do_sh,
- .usage = "run shell script",
+ BAREBOX_CMD_DESC("execute a shell script")
+ BAREBOX_CMD_OPTS("FILE [ARGUMENT...]")
BAREBOX_CMD_GROUP(CMD_GRP_SCRIPT)
- BAREBOX_CMD_HELP(cmd_sh_help)
BAREBOX_CMD_END
static int do_source(int argc, char *argv[])
@@ -1969,21 +1964,16 @@ static int do_source(int argc, char *argv[])
static const char *source_aliases[] = { ".", NULL};
-static const __maybe_unused char cmd_source_help[] =
-"Usage: . filename [arguments]\n"
-"or source filename [arguments]\n"
-"\n"
-"Read and execute commands from filename in the current shell\n"
-"environment and return the exit status of the last command exe-\n"
-"cuted from filename\n";
-
-static const __maybe_unused char cmd_source_usage[] =
-"execute shell script in current shell environment";
+BAREBOX_CMD_HELP_START(source)
+BAREBOX_CMD_HELP_TEXT("Read and execute commands from FILE in the current shell environment.")
+BAREBOX_CMD_HELP_TEXT("and return the exit status of the last command executed.")
+BAREBOX_CMD_HELP_END
BAREBOX_CMD_START(source)
.aliases = source_aliases,
.cmd = do_source,
- .usage = cmd_source_usage,
+ BAREBOX_CMD_DESC("execute shell script in current shell environment")
+ BAREBOX_CMD_OPTS("FILE [ARGUMENT...]")
BAREBOX_CMD_GROUP(CMD_GRP_SCRIPT)
BAREBOX_CMD_HELP(cmd_source_help)
BAREBOX_CMD_END
@@ -1997,32 +1987,31 @@ static int do_dummy_command(int argc, char *argv[])
return 0;
}
-static const __maybe_unused char cmd_exit_help[] =
-"Usage: exit [n]\n"
-"\n"
-"exit script with a status of n. If n is omitted, the exit status is that\n"
-"of the last command executed\n";
+BAREBOX_CMD_HELP_START(exit)
+BAREBOX_CMD_HELP_TEXT("Exit script with status ERRLVL n. If ERRLVL is omitted, the exit status is")
+BAREBOX_CMD_HELP_TEXT("of the last command executed")
+BAREBOX_CMD_HELP_END
BAREBOX_CMD_START(exit)
.cmd = do_dummy_command,
- .usage = "exit script",
+ BAREBOX_CMD_DESC("exit script")
+ BAREBOX_CMD_OPTS("[ERRLVL]")
BAREBOX_CMD_GROUP(CMD_GRP_SCRIPT)
BAREBOX_CMD_HELP(cmd_exit_help)
BAREBOX_CMD_END
#ifdef CONFIG_HUSH_GETOPT
-static const __maybe_unused char cmd_getopt_help[] =
-"Usage: getopt <optstring> <var>\n"
-"\n"
-"hush option parser. <optstring> is a string with valid options. Add\n"
-"a colon to an options if this option has a required argument or two\n"
-"colons for an optional argument. The current option is saved in <var>,\n"
-"arguments are saved in OPTARG. After this command additional nonopts\n"
-"can be accessed starting from $1\n";
+BAREBOX_CMD_HELP_START(getopt)
+BAREBOX_CMD_HELP_TEXT("OPTSTRING contains the option letters. Add a colon to an options if this")
+BAREBOX_CMD_HELP_TEXT("option has a required argument or two colons for an optional argument. The")
+BAREBOX_CMD_HELP_TEXT("current option is saved in VAR, arguments are saved in $OPTARG. Any")
+BAREBOX_CMD_HELP_TEXT("non-option arguments can be accessed starting from $1.")
+BAREBOX_CMD_HELP_END
BAREBOX_CMD_START(getopt)
.cmd = do_dummy_command,
- .usage = "getopt <optstring> <var>",
+ BAREBOX_CMD_DESC("parse option arguments")
+ BAREBOX_CMD_OPTS("OPTSTRING VAR")
BAREBOX_CMD_GROUP(CMD_GRP_SCRIPT)
BAREBOX_CMD_HELP(cmd_getopt_help)
BAREBOX_CMD_END