#!/bin/sh
set -e
set -u

if [ -d ./supported ]; then
	SUPPORTED=./supported
else
	SUPPORTED=/usr/share/games/game-data-packager/supported
fi

if [ -f ./lib/game-data-packager-shared ]; then
	. ./lib/game-data-packager-shared
else
	. /usr/lib/game-data-packager/game-data-packager-shared
fi

if [ $# -lt 1 ]; then
	usage >&2
	exit 1
fi

# defaults
INSTALL="yes"
PRESERVE="no"

# package default settings
if [ -f "./etc/game-data-packager.conf" ]; then
	. "./etc/game-data-packager.conf"
else
	. "/etc/game-data-packager.conf"
fi
OUTDIR=""
OUTFILE=""

# process command line arguments
while [ $# -gt 1 ]; do
	case "$1" in 
		'-n')
			INSTALL="no"
			;;
		'-d')
			PRESERVE="yes"
			shift
			if [ $# -lt 2 ]; then
				echo "missing directory or game argument" >&2
				usage >&2
				exit 1
			fi
			OUTDIR="$1"
			;;
		'--')
			break;
			;;
		*) # possibly the game name
			break;
			;;
	esac
	shift
done

if [ "$INSTALL" = "no" -a "$PRESERVE" = "no" ]; then
	echo "if you specify -n, you must also specify -d." >&2
	exit 1
fi

debug "INSTALL=$INSTALL"
debug "PRESERVE=$PRESERVE"

GAME="$1"
shift

if [ ! -f "$SUPPORTED/$GAME" ]; then
	echo "unknown option or game '$GAME'" >&2
	supported >&2
	exit 1
fi
. "$SUPPORTED/$GAME"

debug "short: $SHORTNAME"
debug "long: $LONGNAME"

# setup a working directory
WORKDIR=`mktemp -t -d game-data-packager.XXXXXX`
debug "WORKDIR=$WORKDIR"
cleanup() {
    if [ "$PRESERVE" != "yes" ] && [ -f "$OUTFILE" ]; then
        rm "$OUTFILE"
    fi
    if [ -d "$WORKDIR" ]; then
        rmdir "$WORKDIR"
    fi
}
trap cleanup EXIT

# now the game's handler needs to be executed
go "$@"

if [ "$PRESERVE" = "yes" ]; then
	echo "generated $OUTFILE."
fi

if [ "$INSTALL" = "yes" ]; then
	debug "invoking dpkg to install the package"
	install_deb "$OUTFILE"
fi

cleanup
