diff_cmd () {
	"$merge_tool_path" "$LOCAL" "$REMOTE"
}

merge_cmd () {
	check_meld_for_features

	option_auto_merge=
	if test "$meld_use_auto_merge_option" = true
	then
		option_auto_merge="--auto-merge"
	fi

	if test "$meld_has_output_option" = true
	then
		"$merge_tool_path" $option_auto_merge --output="$MERGED" \
			"$LOCAL" "$BASE" "$REMOTE"
	else
		"$merge_tool_path" $option_auto_merge "$LOCAL" "$MERGED" "$REMOTE"
	fi
}

# Get meld help message
init_meld_help_msg () {
	if test -z "$meld_help_msg"
	then
		meld_path="$(git config mergetool.meld.path || echo meld)"
		meld_help_msg=$("$meld_path" --help 2>&1)
	fi
}

# Check the features and set flags
check_meld_for_features () {
	# Check whether we should use 'meld --output <file>'
	if test -z "$meld_has_output_option"
	then
		meld_has_output_option=$(git config --bool mergetool.meld.hasOutput)
		case "$meld_has_output_option" in
		true | false)
			: use configured value
			;;
		*)
			: empty or invalid configured value, detecting "--output" automatically
			init_meld_help_msg

			case "$meld_help_msg" in
			*"--output="* | *'[OPTION...]'*)
				# All version that has [OPTION...] supports --output
				meld_has_output_option=true
				;;
			*)
				meld_has_output_option=false
				;;
			esac
			;;
		esac
	fi
	# Check whether we should use 'meld --auto-merge ...'
	if test -z "$meld_use_auto_merge_option"
	then
		meld_use_auto_merge_option=$(
			git config --bool-or-str mergetool.meld.useAutoMerge
		)
		case "$meld_use_auto_merge_option" in
		true | false)
			: use well formatted boolean value
			;;
		auto)
			# testing the "--auto-merge" option only if config is "auto"
			init_meld_help_msg

			case "$meld_help_msg" in
			*"--auto-merge"* | *'[OPTION...]'*)
				meld_use_auto_merge_option=true
				;;
			*)
				meld_use_auto_merge_option=false
				;;
			esac
			;;
		"")
			meld_use_auto_merge_option=false
			;;
		*)
			die "unknown mergetool.meld.useAutoMerge: $meld_use_auto_merge_option"
			;;
		esac
	fi
}
