summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorP. J. McDermott <pjm@nac.net>2013-10-12 09:53:48 (EDT)
committer P. J. McDermott <pjm@nac.net>2013-10-12 09:53:48 (EDT)
commit14510e8e8055636a93a8cf3c302f89bd464d3ea3 (patch)
treef6e5ecc110ce07cf238bcc8c95b1fcf0ba1b1196 /lib
parent19436dbe4282d50606cedbbc89d6d10ec56c4937 (diff)
Print option arguments in help output.
Diffstat (limited to 'lib')
-rw-r--r--lib/cmd.sh30
-rw-r--r--lib/cmd/help.sh4
2 files changed, 31 insertions, 3 deletions
diff --git a/lib/cmd.sh b/lib/cmd.sh
index fa9b1ad..a14eb00 100644
--- a/lib/cmd.sh
+++ b/lib/cmd.sh
@@ -37,6 +37,36 @@ load_cmds()
done
}
+print_opt_summaries()
+{
+ local optstring="${1}"
+ local padding=
+ local opt=
+ local opt_out=
+ local summary=
+
+ padding="$(printf '%24s' '')"
+ for opt in $(printf '%s' "${optstring}" | sed 's/\([a-zA-Z0-9]\)/ \1/g')
+ do
+ if [ ${#opt} -eq 1 ]; then
+ # No argument expected.
+ opt_out="-${opt}"
+ else
+ # Argument expected.
+ opt="${opt%?}"
+ opt_out="-${opt} $(get_msg "opt_${opt}_arg")"
+ fi
+ if [ ${#opt_out} -gt 20 ]; then
+ printf ' %s\n%24s' "${opt_out}" ''
+ else
+ printf ' %-20s ' "${opt_out}"
+ fi
+ summary="$(get_msg "opt_${opt}_summary")"
+ printf '%s\n' "${summary}" | fold -s -w 56 | \
+ sed "2,\$s/^/${padding}/;"
+ done
+}
+
print_cmd_summaries()
{
local padding=
diff --git a/lib/cmd/help.sh b/lib/cmd/help.sh
index 733e9ed..e186663 100644
--- a/lib/cmd/help.sh
+++ b/lib/cmd/help.sh
@@ -33,9 +33,7 @@ cmd_help_main()
printf "$(get_msg 'cmd_help_head')\n\n" "${0}"
printf "$(get_msg 'cmd_help_opts_head')\n"
- for opt in h V b; do
- printf ' -%c %s\n' "${opt}" "$(get_msg "cmd_help_opt_${opt}")"
- done
+ print_opt_summaries 'hVb:'
printf '\n'
printf "$(get_msg 'cmd_help_summary_head')\n"