From: martin f. krafft Date: Thu, 20 Nov 2008 11:31:09 +0000 (+0100) Subject: implement a check function X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?p=topgit.git;a=commitdiff_plain;h=26db970f2a1dedda0bc784474d592798e5267ea6 implement a check function Signed-off-by: martin f. krafft --- diff --git a/tg.sh b/tg.sh index da3366d..258f8ce 100644 --- a/tg.sh +++ b/tg.sh @@ -235,24 +235,36 @@ do_help() 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