#!/bin/sh
#
# mysql
#

MYSQL_LIB="/var/lib/mysql"
MYSQL_RUN="/run/mysql"
MYSQL_PIDFILE="$MYSQL_RUN/mysqld.pid"
MYSQL_LOG="/var/log/mysql"
MYSQL_LOGFILE="$MYSQL_LOG/mysqld.log"
MYSQL_BIN="/usr/bin"

wait_for_ready() {
	WAIT_DELAY=5
	while [ $WAIT_DELAY -gt 0 ]; do
		if $MYSQL_BIN/mysqladmin ping > /dev/null 2>&1; then
			return 0
		fi
		sleep 1
		: $((WAIT_DELAY -= 1))
	done
	return 1
}

start() {
	# stderr is redirected to prevent a warning
	# if mysql lib directory doesn't exist
	if [ `ls -1 $MYSQL_LIB 2> /dev/null | wc -l` = 0 ] ; then
		printf "Creating mysql system tables ... "
		$MYSQL_BIN/mysql_install_db --basedir=/usr \
			--datadir=$MYSQL_LIB > /dev/null 2>&1
		if [ $? != 0 ]; then
			echo "FAIL"
			exit 1
		fi
		chown -R mysql:mysql $MYSQL_LIB
		echo "OK"
	fi

	# mysqld runs as user mysql, but /run is only writable by root
	# so create a subdirectory for mysql.
	install -d -o mysql -g root -m 0755 $MYSQL_RUN

	# Also create logging directory as user mysql.
	install -d -o mysql -g root -m 0755 $MYSQL_LOG

	# We don't use start-stop-daemon because mysqld has its own
	# wrapper script.
	printf "Starting mysql ... "
	$MYSQL_BIN/mysqld_safe --pid-file=$MYSQL_PIDFILE --user=mysql \
		--log-error=$MYSQL_LOGFILE > /dev/null 2>&1 &
	wait_for_ready
	[ $? = 0 ] && echo "OK" || echo "FAIL"
}

stop() {
	printf "Stopping mysql ... "
	if [ -f $MYSQL_PIDFILE ]; then
		kill `cat $MYSQL_PIDFILE` > /dev/null 2>&1
		[ $? = 0 ] && echo "OK" || echo "FAIL"
	else
		echo "FAIL"
	fi
}

restart() {
	stop
	sleep 1
	start
}

case "$1" in
  start)
	start
	;;
  stop)
	stop
	;;
  restart)
	restart
	;;
  *)
	echo "Usage: $0 {start|stop|restart}"
	;;
esac
