diff options
author | John Keeping <john@keeping.me.uk> | 2013-01-30 19:55:46 +0000 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2013-02-02 21:46:52 -0800 |
commit | 665682c9fd81df7e2dc8fe9db28fa5918a2f8ba0 (patch) | |
tree | cb6c4540f02a73be17ea9a3e3770cd5612c27af4 /git-mergetool--lib.sh | |
parent | 17a1f1c5b7041afab2e184304d8194a2f81f196d (diff) | |
download | git-665682c9fd81df7e2dc8fe9db28fa5918a2f8ba0.tar.gz |
mergetool--lib: list user configured tools in '--tool-help'
Signed-off-by: John Keeping <john@keeping.me.uk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'git-mergetool--lib.sh')
-rw-r--r-- | git-mergetool--lib.sh | 41 |
1 files changed, 40 insertions, 1 deletions
diff --git a/git-mergetool--lib.sh b/git-mergetool--lib.sh index 293b8e8a93..330b036ac9 100644 --- a/git-mergetool--lib.sh +++ b/git-mergetool--lib.sh @@ -19,9 +19,24 @@ is_available () { type "$merge_tool_path" >/dev/null 2>&1 } +list_config_tools () { + section=$1 + line_prefix=${2:-} + + git config --get-regexp $section'\..*\.cmd' | + while read -r key value + do + toolname=${key#$section.} + toolname=${toolname%.cmd} + + printf "%s%s\n" "$line_prefix" "$toolname" + done +} + show_tool_names () { condition=${1:-true} per_line_prefix=${2:-} preamble=${3:-} not_found_msg=${4:-} + extra_content=${5:-} shown_any= ( cd "$MERGE_TOOLS_DIR" && ls ) | { @@ -40,6 +55,19 @@ show_tool_names () { fi done + if test -n "$extra_content" + then + if test -n "$preamble" + then + # Note: no '\n' here since we don't want a + # blank line if there is no initial content. + printf "%s" "$preamble" + preamble= + fi + shown_any=yes + printf "\n%s\n" "$extra_content" + fi + if test -n "$preamble" && test -n "$not_found_msg" then printf "%s\n" "$not_found_msg" @@ -254,9 +282,20 @@ show_tool_help () { any_shown=no cmd_name=${TOOL_MODE}tool + config_tools=$({ + diff_mode && list_config_tools difftool "$tab$tab" + list_config_tools mergetool "$tab$tab" + } | sort) + extra_content= + if test -n "$config_tools" + then + extra_content="${tab}user-defined:${LF}$config_tools" + fi + show_tool_names 'mode_ok && is_available' "$tab$tab" \ "$tool_opt may be set to one of the following:" \ - "No suitable tool for 'git $cmd_name --tool=<tool>' found." && + "No suitable tool for 'git $cmd_name --tool=<tool>' found." \ + "$extra_content" && any_shown=yes show_tool_names 'mode_ok && ! is_available' "$tab$tab" \ |