#!/bin/sh
# esv - everest service manager

preload() {
	. /etc/esv.conf
		if [ "$?" != "0" ]; then
			printf "error while parsing esv config file\n"
			exit 1
		fi
}

helpmsg_big() {
	printf "esv - Everest Service Manager\n"
	printf "usage: esv [start] [stop] [restart] [-h/--help] [-v/--version] service-name\n"
	printf "\n"
	printf "esv {start}		start a service\n"
	printf "esv {stop}		stop a running service\n"
	printf "esv {restart}		restart a running service\n"
	printf "esv {-h/--help}		print this message and exit\n"
	printf "esv {-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"
	exit 0
}

helpmsg_small() {
	printf "usage: esv [start] [stop] [restart] [-n/--help] [-v/--version] service-name\n"
	exit 1
}

startsv() {
	if [ "$2" == "" ]; then
		printf "${red}you must specify a service name${reset}\n"
		exit 1
	fi
	printf "${blue}starting service $2...${reset}\n"
	${SRV_DIR}/$2/${RUN}
		if [ "$?" != "0" ]; then
			printf "${red}service $2 could not start${reset}\n"
			exit 1
		fi
	printf "${green}service $2 started successfully${reset}\n"
	exit 0
}

stopsv() {
	if [ "$?" == "" ]; then
		printf "${red}you must specify a service name${reset}\n"
		exit 1
	fi
	printf "${blue}stopping service $2...${reset}\n"
	${SRV_DIR}/$2/${STOP}
		if [ "$?" != "0" ]; then
			printf "${red}service $2 could not stop${reset}\n"
			exit 1
		fi
	printf "${green}service $2 stopped successfully${reset}\n"
	exit 0
}

restartsv() {
	if [ "$2" == "" ]; then
		printf "${red}you must specify a service name${reset}\n"
		exit 1
	fi
	printf "${blue}restarting service $2...${reset}\n"
	${SRV_DIR}/$2/${STOP} && ${SRV_DIR}/$2/${RUN}
		if [ "$?" != "0" ]; then
			printf "${red}service $2 could not restart${reset}\n"
			exit 1
		fi
	printf "${green}service $2 restarted successfully${reset}\n"
	exit 0
}

printver() {
	printf "${blue}esv v2.0.0${reset}\n"
	exit 0
}

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