Signed-off-by: martin f. krafft <madduck@debian.org>
fi
}
+# Check whether we are supposed to output the help message
+should_do_help()
+{
+ # we are being sourced for utility functions, never run help
+ [ -z "$tg__include" ] || return 1
+
+ local prev
+ while [ -n "$1" ]; do
+ case "$1" in
+ help|--help|-h)
+ shift
+ echo "${1:-$prev}"
+ return 0
+ esac
+ prev="$1"
+ shift
+ done
+
+ # run help when there was no previous topic, meaning that there where
+ # no arguments at all
+ test -z "$prev"
+}
## Startup
[ -d "@cmddir@" ] ||
die "No command directory: '@cmddir@'"
-args_saved="$@"
-while [ -n "$1" ]; do
- case "$1" in
- help|--help|-h)
- shift
- do_help "$1"
- exit 0;;
- esac
- shift
-done
-set -- $args_saved
-unset args_saved
+# check if we should run help and get the topic while we're at it
+help_topic="$(should_do_help "$@")" && { do_help "$help_topic"; exit 0; }
## Initial setup