#!/bin/sh -efu

. girar-sh-functions

usage()
{
	[ -z "$*" ] || message "$*"
	echo >&2 "usage: $PROG <path to git directory> [default|on|off|run]"
	exit 1
}

[ "$#" -ge 1 ] ||
	usage 'Not enough arguments.'
[ "$#" -le 2 ] ||
	usage 'Too many arguments.'
[ "${1-}" != '--help' ] ||
	usage

cd

dir="$(validate_packages_dir "$1")"; shift
dir="$(add_git_suffix "$dir")"
[ -d "$dir" ] ||
	fatal "$dir: Directory not available"
cd "$dir"

if [ "$#" -eq 0 ]; then
	value="$(GIT_DIR=. git config girar.merges ||:)"
	[ -n "$value" ] ||
		value=default
	printf '%s\n' "$value"
	exit
fi

value="$1"; shift
case "$value" in
	default)
		GIT_DIR=. git config --unset girar.merges ;;
	true|false|on|off|yes|no)
		GIT_DIR=. git config girar.merges "$value" ;;
	check)
		echo -n 'Checking repository... '
		out=$(check_merges "0000000000000000000000000000000000000000" HEAD) &&
			echo done ||
			{ echo fail; echo "$out"; }
		;;
	*) fatal "$value: Invalid merges mode" ;;
esac
