X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?a=blobdiff_plain;f=tg.sh;h=6282250ee0d4e63fcca583a52cd47fc39aefc53e;hb=6e92736dd815e29c3715362970380f5e9a759a11;hp=1762f03e9522d96b01ffa6ee2f028e1464ffc174;hpb=d400bb3263ab1239cc219541bb4364135b1b753e;p=topgit.git diff --git a/tg.sh b/tg.sh index 1762f03..6282250 100644 --- a/tg.sh +++ b/tg.sh @@ -3,6 +3,7 @@ # (c) Petr Baudis 2008 # GPLv2 +TG_VERSION=0.6 ## Auxiliary functions @@ -249,7 +250,7 @@ do_help() sep="|" done - echo "TopGit v0.5 - A different patch queue manager" + echo "TopGit v$TG_VERSION - A different patch queue manager" echo "Usage: tg [-r REMOTE] ($cmds|help) ..." elif [ -r "@cmddir@"/tg-$1 ] ; then @cmddir@/tg-$1 -h || : @@ -264,6 +265,29 @@ 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" +} + ## Pager stuff # isatty FD @@ -308,6 +332,9 @@ setup_pager() [ -d "@cmddir@" ] || die "No command directory: '@cmddir@'" +# 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 set -e @@ -343,9 +370,6 @@ cmd="$1" shift case "$cmd" in -help|--help|-h) - do_help "$1" - exit 0;; --hooks-path) # Internal command echo "@hooksdir@";;