#!/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=status
else
	value="$1"; shift
fi

case "$value" in
	default)
		GIT_DIR=. git config --unset receive.denyNonFastforwards
		GIT_DIR=. git config --unset receive.denyDeletes ;;
	true|false|on|off|yes|no)
		GIT_DIR=. git config receive.denyNonFastforwards "$value"
		GIT_DIR=. git config receive.denyDeletes "$value" ;;
	check|status)
		echo "Overwrite repository status:"
		deny1="$(GIT_DIR=. git config receive.denyNonFastforwards ||:)"
		deny2="$(GIT_DIR=. git config receive.denyDeletes ||:)"
		default_deny1="$(GIT_DIR= git config receive.denyNonFastforwards ||:)"
		default_deny2="$(GIT_DIR= git config receive.denyDeletes ||:)"
		default_deny1=${default_deny1:-no}
		default_deny2=${default_deny2:-no}
		echo " denyNonFastforwards: ${deny1:-$default_deny1 (by default)}"
		echo " denyDeletes: ${deny2:-$default_deny2 (by default)}"
		;;
	*) fatal "$value: Invalid overwrite mode" ;;
esac
