#!/bin/sh
# config for quake2-data

# woosy coward script
set -e

# source the debconf magics
. /usr/share/debconf/confmodule

# we are hip and down with the new generation
db_version 2.0
# look ma, i can reverse park!
db_capb backup

PREVSTATE=1
STATE=1

pointfile=q2-3.20-x86-full-ctf.exe
sharefile=q2-314-demo-x86.exe

sharepakmd5="27d77240466ec4f3253256832b54db8a"
cdrompakmd5="1ec55a724dc3109fd50dde71ab581d70"
pointpakmd5="42663ea709b7cd3eb9b634b36cfecb1a"

BASE=/usr/lib/games/quake2/baseq2

getsum() {
	_FILE=$1

	if [ -e "$_FILE" ]; then
		md5sum $_FILE | cut -f1 -d' '
	fi
}

validmd5() {
	_FILE=$1
	_SUM=$2

	_CHECK=`getsum $_FILE`
	if [ "$_CHECK" = "$_SUM" ]; then
		echo true
	else
		echo false
	fi
}

while [ "$STATE" != "0" ]; do

	case "$STATE" in
		1)  # install shareware or full version?
			db_input medium quake2-data/instmethod || true
			# where do we go from here?
			NEXTSTATE=2
			PREVSTATE=0
			;;
		2)  # tell user what they chose
			db_get quake2-data/instmethod
			if [ "$RET" = "download shareware data" ]; then
				NEXTSTATE=3
				PREVSTATE=1
			elif [ "$RET" = "install from CD-ROM" ]; then
				db_input high quake2-data/fullinst || true
				NEXTSTATE=5
				PREVSTATE=1
			else
				NEXTSTATE=0
				PREVSTATE=1
			fi
			;;
		3)  # where to store downloaded file
			db_get quake2-data/pointrelease
			POINTREL="$RET"
			db_get quake2-data/instmethod
			INSTMETHOD="$RET"

			if [ "$INSTMETHOD" = "download shareware data" ]; then
				VALID=`validmd5 $BASE/pak0.pak $sharepakmd5`
				if [ "$VALID" = "false" ]; then
					db_input medium quake2-data/storage || true
					NEXTSTATE=4
				else
					#db_input medium quake2-data/donealready || true
					NEXTSTATE=0
				fi
				PREVSTATE=1
			elif [ "$POINTREL" = "true" -a "$INSTMETHOD" = "install from CD-ROM" ]; then
				VALID=`validmd5 $BASE/pak1.pak $pointpakmd5`
				if [ "$VALID" = "false" ]; then
					db_input medium quake2-data/storage || true
					NEXTSTATE=4
				else
					#db_input medium quake2-data/donealready || true
					NEXTSTATE=0
				fi
				PREVSTATE=7
			else
				NEXTSTATE=0
			fi
			;;
		4)  # which mirror to use
			db_get quake2-data/storage
			STORAGE="$RET"
			
			db_get quake2-data/instmethod
			if [ "$RET" = "download shareware data" -a ! -e "$STORAGE/$sharefile" ]; then
				db_input medium quake2-data/mirror || true
				NEXTSTATE=0
				PREVSTATE=3
			elif [ "$RET" = "install from CD-ROM" -a ! -e "$STORAGE/$pointfile" ]; then
				db_input medium quake2-data/mirror || true
				NEXTSTATE=0
				PREVSTATE=7
			else
				NEXTSTATE=0
				PREVSTATE=1
			fi

			;;
		5)
			VALID=`validmd5 $BASE/pak0.pak $cdrompakmd5`
			if [ "$VALID" = "false" ]; then
				db_input medium quake2-data/cdromdir || true
				NEXTSTATE=6
			else
				NEXTSTATE=0
			fi
			PREVSTATE=1
			;;
		6)
			db_input medium quake2-data/copyfiles || true
			NEXTSTATE=7
			PREVSTATE=5
			;;
		7)
			db_input medium quake2-data/pointrelease || true
			NEXTSTATE=3
			PREVSTATE=6
			;;
	esac

	# debconf is GO!
	if db_go ; then
		STATE=$NEXTSTATE
	else
		STATE=$PREVSTATE
	fi
done
