#!/bin/sh
# esv - Everest Service Manager

source /etc/esv.conf
	if [ "$?" != "0" ]; then
		printf "error while parsing esv config file, does it exist?\n"
		exit 1
	fi

helpmsg_big() {
	printf "${0} - Everest Service Manager\n"
	printf "usage: ${0} [start] [stop] [restart] [-h] [-v] SERVICE NAME\n"
	printf "\n"
	printf "${0} {start}		start a service\n"
	printf "${0} {stop}		stop a service\n"
	printf "${0} {restart}		restart a running service\n"
	printf "${0} {-h/--help}	print this message and exit\n"
	printf "${0} {-v/--version}	print the version and exit\n"
	printf "\n"
	printf "This program is free software.\n"
	printf "See the GNU GPL version 3 for details.\n"
}

helpmsg_small() {
	printf "usage: ${0} [start] [stop] [restart] [-h] [-v] SERVICE NAME\n"
}

check_if_exists() {
	SV="${@}"
	for SRV in ${SV[@]}; do
		if [ ! -f "${SRV_DIR}/${SRV}" ]; then
			printf "${red}service ${SRV} does not exist${reset}\n"
			exit 1
		fi
	done
}

startsv() {
	SV="${@}"
	if [ "$SV" = "" ]; then
		printf "${red}you must specify a service name${reset}\n"
		exit 1
	fi

	printf "${blue}starting: $SV...${reset}\n"
		for SRV in ${SV[@]}; do
			source ${SRV}
			run
		done
}

stopsv() {
	SV="${@}"
	if [ "$SV" = "" ]; then
		printf "${red}you must specify a service name${reset}\n"
		exit 1
	fi

	printf "${blue}stopping: $SV...${reset}\n"
		for SRV in ${SV[@]}; do
			source ${SRV}
			stop
		done
}

restartsv() {
	SV="${@}"
	if [ "$V" = "" ]; then
		printf "${red}you must specify a service name${reset}\n"
		exit 1
	fi

	printf "${blue} restarting: $SV...${reset}\n"
		for SRV in ${SV[@]}; do
			source ${SRV}
			restart
		done
}

printver() {
	printf "${blue}esv v3.0.0${reset}\n"
}

case $1 in
	-h|--help)
		helpmsg_big
		exit 0
	;;
	-v|--version)
		printver
		exit 0
	;;
	start)
		shift
		check_if_exists "$@"
		startsv "$@"
	;;
	stop)
		shift
		check_if_exists "$@"
		stopsv "$@"
	;;
	restart)
		shift
		check_if_exists "$@"
		restartsv "$@"
	;;
	*)
		helpmsg_small "$@"
esac
