#!/bin/bash

ECPATH=$(type -p voxren)

ECPATH=${ECPATH%/voxren}
ECPATH=${ECPATH%/bin}
XTARGETCONFPATH=${ECPATH}/share/eccet/config/modules/save/GGITGT

echo "Install Path is $ECPATH"
echo

if [ $# == 0 ] ; then
	echo "Usage: $0 [-d] [-f] -h hostname"
	echo "       $0 [-d] -a (delete all)"
	echo "Sets up or deletes X targets for use by the Eccet GGI-target save module."
	echo "-f forces setup even if host can't be reached now."
	echo "See man ${0##*/} for details."
	exit 1
fi

DO_DELETE=0
DO_FORCE=0
HOSTS=""

while getopts "dfah:" OPTCHAR; do
	case "$OPTCHAR" in
		"d")
			DO_DELETE=1
		;;
		"f")
			DO_FORCE=1
		;;
		"a")
			if [ "$DO_DELETE" == "1" ] ; then
				DO_DELETE=2
			else
				echo "-a only valid after -d."
				exit 1;
			fi
		;;
		"h")
			HOSTS=$OPTARG
		;;
	esac
done

function ask_delete() {
	cd $XTARGETCONFPATH
	BINDINGS=$(ls $1 2>/dev/null | sed -ne "s/\.test\$//p")
	if [ "$BINDINGS" == "" ] ; then
		echo "No profiles found. Aborting."
		exit 1
	fi
	echo "The following X target profiles will be deleted:"
	echo "$BINDINGS"
	echo
	echo "Do you want to delete these profiles? (yes or no)"
	while read a; do
		if [ "$a" == "yes" ]; then
			break;
		elif [ "$a" == "no" ] ;  then
			echo "O.k. - aborting."
			exit 1;
		else
			echo "Please answer yes or no."
		fi
	done
	echo "O.k. - deleting."
	for a in $BINDINGS; do
		rm -f $a $a.test
	done
	exit
}

if [ "$DO_DELETE" == "2" ] ; then
	ask_delete "X_*.test"
fi

if [ "$HOSTS" == "" ] ; then
	echo "Hostname must be given."
	exit 1
fi

PROFILENAME="X_${HOSTS}"

if [ "$DO_DELETE" == "1" ] ; then
	ask_delete "$PROFILENAME.test"
fi

if [ "$DO_FORCE" != "1" ] ; then
	echo "Checking reachability of host $HOSTS."
	ping -c1 $HOSTS 2>/dev/null >/dev/null || {
		echo "Can't reach host $HOSTS. Aborting. -f to override."
		exit 1;
	}
fi

echo "You requested to add a Eccet X target profile called $PROFILENAME."

if [ -f $XTARGETCONFPATH/$PROFILENAME ] ; then
	echo "Config file exists. Unchanged."
	echo "Please delete it first, if you want to update that."
else
	cat >$XTARGETCONFPATH/$PROFILENAME <<EOF
X:-keepcursor:-noshm:$HOSTS:0
EOF
	cat >$XTARGETCONFPATH/$PROFILENAME.test <<EOF
#!/bin/bash
HOST=$HOSTS
xset -display "\$HOST:0" q >/dev/null 2>/dev/null || exit 1
EOF
	chmod a+x $XTARGETCONFPATH/$PROFILENAME.test
fi
