chiark / gitweb /
Print help message when command is not proper
[topgit.git] / tg.sh
diff --git a/tg.sh b/tg.sh
index 959f621ed9ac4cec251c31412a9696b051a1a8c5..4020527b2e27a1db9e5121275c9559c9307b92bd 100644 (file)
--- a/tg.sh
+++ b/tg.sh
@@ -232,10 +232,17 @@ do_help()
                fi
        else
                echo "`basename $0`: no help for $1" 1>&2
+               do_help
+               exit 1
        fi
 }
 
 
+## Startup
+
+[ -d "@cmddir@" ] ||
+       die "No command directory: '@cmddir@'"
+
 ## Initial setup
 
 set -e
@@ -249,9 +256,6 @@ tg="tg"
 setup_ours
 setup_hook "pre-commit"
 
-[ -d "@cmddir@" ] ||
-       die "No command directory: '@cmddir@'"
-
 ## Dispatch
 
 # We were sourced from another script for our utility functions;
@@ -259,12 +263,18 @@ setup_hook "pre-commit"
 [ -z "$tg__include" ] || return 0
 
 if [ "$1" = "-r" ]; then
-       shift; base_remote="$1"; shift
+       shift
+       if [ -z "$1" ]; then
+               echo "Option -r requires an argument." >&2
+               do_help
+               exit 1
+       fi
+       base_remote="$1"; shift
        tg="$tg -r $base_remote"
 fi
 
 cmd="$1"
-[ -n "$cmd" ] || die "He took a duck in the face at two hundred and fifty knots"
+[ -n "$cmd" ] || { do_help; exit 1; }
 shift
 
 case "$cmd" in
@@ -277,6 +287,7 @@ help|--help|-h)
 *)
        [ -r "@cmddir@"/tg-$cmd ] || {
                echo "Unknown subcommand: $cmd" >&2
+               do_help
                exit 1
        }
        . "@cmddir@"/tg-$cmd;;