Re: [PATCH] Allow help/--help/-h to be run outside of a TopGit repo
From: Petr Baudis <hidden>
Date: 2016-06-15 22:45:40
On Thu, Nov 20, 2008 at 12:46:34PM +0100, martin f. krafft wrote:
quoted hunk ↗ jump to hunk
The user ought to be able to call `tg help` from anywhere in the filesystem, not just Git repositories, so the help parsing has to happen before the calls to git git binary. Debian bug: #501982 Signed-off-by: martin f. krafft <redacted> --- tg.sh | 28 +++++++++++++++++++++++++--- 1 files changed, 25 insertions(+), 3 deletions(-)diff --git a/tg.sh b/tg.sh index 4dcc15e..258f8ce 100644 --- a/tg.sh +++ b/tg.sh@@ -235,12 +235,37 @@ 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@'" +# 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; } +
Why is this so complicated? Can't you just do_help from should_do_help()? The overall semantics seems strange anyway, though - it seems that 'tg mail --help -r' will try to show help for '-r' instead of 'mail'. -- Petr "Pasky" Baudis People who take cold baths never have rheumatism, but they have cold baths.