#!/bin/sh

MASTER=master

if test -z "$GIT"
then
	case "$(git version 2>/dev/null)" in
	"git version"*)
		GIT=git ;;
	*)
		echo >&2 "No git to bootstrap"
		exit 1 ;;
	esac
fi

inst_prefix=$(
	IFS=:
	for p in $PATH
	do
		probed=${p%/git-active/bin}
		if test "$probed" != "$p"
		then
			echo "$probed"
			exit
		fi
	done
	echo $HOME
)

LANG=C

for cv in PYTHON_PATH=python TCL_PATH=tclsh TCLTKPATH=wish
do
	cmd=${cv#*=}
	var=${cv%=*}
	eval $(
		if test -f "/usr/bin/$cmd"
		then
			break
		fi
		for p in /usr/bin /usr/local/bin
		do
			if test -f "$p/$cmd"
			then
				echo "$var=$p/$cmd; export $var"
				break
			fi
			found=$(find "$p/$cmd"* -type f 2>/dev/null | head -n 1)
			if test -f "$found"
			then
				echo "$var=$found; export $var"
				break
			fi
		done
	)
done

tests= jobs= skip= oldtest= with_dash= testpen=
clean=:

case `uname` in
OpenBSD)
	# O="-fgnu89-inline"
	skip="t9402"
	;;
NetBSD)
	OLD_ICONV=YesPlease; export OLD_ICONV
	skip="t5000 t9402"
	;;
FreeBSD)
	OLD_ICONV=YesPlease; export OLD_ICONV
	skip="t5560"
	;;
SunOS)
	NEEDS_CRYPTO_WITH_SSL=YesPlease ; export NEEDS_CRYPTO_WITH_SSL
	NO_PEDANTIC=CannotDo
	;;
esac

determine_branch () {
	expr "$($GIT symbolic-ref --no-recurse HEAD 2>/dev/null ||
		$GIT symbolic-ref HEAD 2>/dev/null)" : 'refs/heads/\(.*\)' ||
	echo detached
}

determine_version () {
	v=`$GIT describe HEAD`
	expr "$v" : '.*-g[0-9a-f]*$' >/dev/null && {
		echo >&2 "You are on 'snap' but $v is not an official version."
		exit 1
	}
	echo "$v"
}

determine_long_version () {
	$GIT describe HEAD 2>/dev/null || echo unknown-g00000000 |
	sed -e 's/-/./g'
}

BUILTIN_CLEAN_FIX=8687f777
if ! git merge-base --is-ancestor $BUILTIN_CLEAN_FIX HEAD
then
	NO_PEDANTIC=YesPlease
fi

DEVELOPER=
case "$NO_PEDANTIC" in
?*)	;;
'')
	DEVELOPER=1
	;;
'not-used-anymore')
	# PEDANT="-Wtypedef-redefinition $PEDANT"
	PEDANT="-Werror -Wold-style-definition $PEDANT"
	PEDANT="-Wpointer-arith -Woverflow -Wunused $PEDANT"
	PEDANT="-Wold-style-declaration -Wstrict-prototypes $PEDANT"
	PEDANT="-Wstrict-prototypes $PEDANT"
	;;
esac

while case $# in 0) break ;; esac
do 
	case "$1" in
	--pedantic)
		echo >&2 "(no need to say --pedantic)"
		;;
	-j*)
		case "$NO_JOBS" in
		?*)	jobs= ;;
		'')	jobs=$1 ;;
		esac
		;;
	-noprove | --noprove)
		oldtest=t
		;;
	-loose | --loose)
		DEVELOPER= PEDANT=
		;;
	--memtrash)
		testpen=testpen.$$
		;;
	--memtrash=*)
		testpen=testpen.${1#--memtrash=}
		;;
	--locale=*)
		LANG=${1#*=}
		;;
	--test=*)
		tests=$(
			cd t &&
			IFS="$IFS,"
			for t in ${1#*=}
			do
				eval echo "t$t-*.sh"
			done | tr '\012' ' '
		)
		;;
	--long)
		GIT_TEST_LONG=YesPlease
		export GIT_TEST_LONG
		;;
	--dash)
		with_dash=y
		;;
	--)
		shift
		break
		;;
	-*)
		echo >&2 "Eh $1?"
		exit 1
		;;
	*)
		break
		;;		
	esac
	shift
done

if test -n "$testpen"
then
	for TRASH in /dev/shm /tmp ""
	do
		if test -n "$TRASH" &&
		   mkdir -p "$TRASH/$testpen" 2>/dev/null &&
		   test -w "$TRASH/$testpen"
		then
			testpen=$(cd "$TRASH/$testpen" && /bin/pwd)
			TRASH="--root=$testpen"
			clean="$clean; rmdir '$testpen'"
			break
		fi
	done
	GIT_TEST_OPTS="$TRASH${GIT_TEST_OPTS+" $GIT_TEST_OPTS"}"
	export GIT_TEST_OPTS
fi

test -f /bin/dash || with_dash=

if test -z "$tests" && test -n "$skip"
then
	GIT_SKIP_TESTS="${GIT_SKIP_TESTS:-$skip}"
	export GIT_SKIP_TESTS
fi
if test -z "$oldtest" &&
   sh -c 'prove --version >/dev/null 2>&1' &&
   sh -c 'prove --exec : >/dev/null 2>&1'
then
	# --state=slow,save
	DEFAULT_TEST_TARGET=prove
	GIT_PROVE_OPTS="${GIT_PROVE_OPTS:+$GIT_PROVE_OPTS }--timer $jobs"
	export DEFAULT_TEST_TARGET GIT_PROVE_OPTS
fi

LC_ALL=$LANG
export LANG LC_ALL

branch=$(determine_branch)

case "$branch" in
next | maint | $MASTER | seen | jch)
	prefix="$inst_prefix/git-$branch"
	;;
snap)
	v=$(determine_version)
	prefix="$inst_prefix/git-snap-$v"
	;;
*)
	prefix="$inst_prefix/git-test" ;;
esac

clean="$clean; rm -f version"
determine_long_version >version

set "prefix=$prefix" "$@"
if test -n "$with_dash" && test -f /bin/dash
then
	set "SHELL_PATH=/bin/dash" "$@"
fi

if grep >/dev/null DC_SHA1 Makefile
then
	SHA1IMPLEMENTATION=DC_SHA1=YesPlease
elif grep >/dev/null BLK_SHA1 Makefile
then
	SHA1IMPLEMENTATION=BLK_SHA1=YesPlease
else
	SHA1IMPLEMENTATION=
fi

if test -f sha256/nettle.h && test -f /usr/include/nettle/sha2.h
then
	SHA1IMPLEMENTATION="$SHA1IMPLEMENTATION NETTLE_SHA256=YesPlease"
fi

set	MAN_BASE_URL='"http://www.kernel.org/pub/software/scm/git/docs/"' \
	MAN_BOLD_LITERAL=YesPlease \
	$SHA1IMPLEMENTATION \
	GNU_ROFF=YesPlease \
	USE_LIBPCRE=YesPlease \
	"$@"

# Platform hack
if test -z "${make:+set}" && {
	test -x /usr/local/bin/gmake ||
	test -x /usr/pkg/bin/gmake ||
	test -x /usr/bin/gmake
}
then
	make=gmake
fi
if test -f /bin/ginstall
then
	set INSTALL=ginstall "$@"
fi

unset	SSH_AGENT_PID SSH_CLIENT SSH_TTY SSH_AUTH_SOCK SSH_CONNECTION \
	GPG_AGENT_INFO GNOME_KEYRING_CONTROL GNOME_KEYRING_PID \
	XDG_SESSION_COOKIE XDG_SESSION_PATH XDG_SEAT_PATH  XDG_DATA_DIRS \
	PGPPATH AUTO_PROXY WINDOWID SESSION_MANAGER XDG_CONFIG_DIRS STY \
	GDMSESSION KRB5CCNAME GNOME_DESKTOP_SESSION_ID \
	DBUS_SESSION_BUS_ADDRESS LESSOPEN WINDOW DISPLAY GTK_IM_MODULE \
	XDG_CURRENT_DESKTOP LESSCLOSE XAUTHORITY

# O=-fsanitize=address Meta/Make

${make-make} \
     $jobs \
     ETC_GITCONFIG=$prefix/etc/gitconfig \
     ${DEVELOPER:+"DEVELOPER=YesPlease"} \
     SPATCH_FLAGS="--all-includes --recursive-includes --patch ." \
     SPATCH_BATCH_SIZE=16 \
     CFLAGS="-g -Wall -Wunused -Wdeclaration-after-statement -std=gnu99${O:+ $O}" \
     ${tests:+"T=$tests"} ${tests:+UNIT_TESTS=} \
     "$@"
status=$?
eval "$clean"
exit $status
