#!/bin/sh

host="localhost"
port="6000"
team="OZ"
usleep_time=2000000
default_config_file="./config/OZ-default"

usage()
{
	(echo "Usage: $0 config_file [options]"
	 echo "Possible options are:"
	 echo "      --help"
	 echo "  -h, --host HOST          (default \"${host}\")"
	 echo "  -p, --port PORT          (default \"${port}\")"
	 echo "  -t, --team-name TEAMNAME (default \"${team}\")") 1>&2
}


config_files=""

while [ $# -gt 0 ]
do
	case $1 in

	--help)
		usage
		exit 0
		;;

	-h|--host)
		host=$2
		shift 1
		;;

	-p|--port)
		port=$2
		shift 1
		;;

	-t|--team-name)
		team=$2
		shift 1
		;;

	*)
		if [ -z "${config_files}" ]; then
			config_files=$1
		else
			config_files="${config_files} ${1}"
		fi
		;;
	esac

	shift 1
done

if [ -z "${config_files}" ]; then
	if [ -r "${default_config_file}" ]; then
		config_files="${default_config_file}"
	else
		usage
		exit 1
	fi
fi


sort -n ${config_files} \
  | while read original_line
    do
	# transform line
	line=`echo "${original_line}" \
		| sed 's/#.*$//'  \
		| sed 's/[^-_+a-zA-Z0-9: 	]/_/' \
		| sed 's/^[ 	]*//' \
		| sed 's/[ 	]$//'`

	if [ -z "${line}" ]; then
		continue
	fi

	# check format
	if ! echo "${line}" \
	   | egrep '^[0-9]+[ 	]+[-_+a-zA-Z0-9:]+[ 	]+[-_+a-zA-Z0-9:]+$' \
	   1> /dev/null
	then
		echo -n "${0}: Syntax error."
		exit 1
	fi

	# print progress
	echo "${line}"

	# get name and role
	name=`echo "$line" | awk '{print $2}'`
	role=`echo "$line" | awk '{print $3}' | sed 's/:[0-9]*$//'`

	# executable check
	if [ ! -x ./${name}/start-client ]; then
		echo "Can't execute ./${name}/start-client" 1>&2
		continue
	fi

	# invoke client
	(cd ./${name};
	 ./start-client -h ${host} -p ${port} -t ${team} -R ${role}&)

	# wait for client-server connection
	if [ -x ./usleep ]; then
		./usleep $usleep_time
	else
		sleep `expr ${usleep_time} / 1000 / 1000`
	fi

    done
