exit 1
}
+# Make sure we are in the worktree, not under .git; die otherwise
+ensure_git_repo_or_die()
+{
+ local is_inside_repo is_inside_git_dir
+ is_inside_repo=1
+ is_inside_git_dir=$(git rev-parse --is-inside-git-dir 2>/dev/null) ||
+ is_inside_repo=0
+
+ case "$is_inside_repo/$is_inside_git_dir" in
+ 0*) die "Cannot run outside of a Git repository.";;
+ 1/true) die "Cannot run from inside \`.git\` hierarchy, please switch to work-tree.";;
+ esac
+}
+
# cat_file TOPIC:PATH [FROM]
# cat the file PATH from branch TOPIC when FROM is empty.
# FROM can be -i or -w, than the file will be from the index or worktree,
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
[ -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; }
+
+ensure_git_repo_or_die
+
## Initial setup
set -e
shift
case "$cmd" in
-help|--help|-h)
- do_help "$1"
- exit 0;;
--hooks-path)
# Internal command
echo "@hooksdir@";;