#!/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.repack ||:)"
	[ -n "$value" ] ||
		value=default
	printf '%s\n' "$value"
	exit
fi

value="$1"; shift
case "$value" in
	default)
		GIT_DIR=. git config --unset girar.repack ;;
	true|false|on|off)
		GIT_DIR=. git config girar.repack "$value" ;;
	run)
		echo -n 'Repacking repository... '
		git prune
		git repack -a -d
		echo done
		;;
	*) fatal "$value: Invalid repack mode" ;;
esac
