#!/bin/bash

set -e

# start supervisord
/usr/bin/supervisord

appStart () {
	# fix permissions and ownership of /var/lib/postgresql
	chown -R postgres:postgres /var/lib/postgresql
	chmod 700 /var/lib/postgresql

	# initialize PostgreSQL data directory
	if [ ! -d /var/lib/postgresql/9.1/main ]; then
		echo "Initializing database..."
		PG_PASSWORD=$(pwgen -c -n -1 14)
		echo "${PG_PASSWORD}" > /var/lib/postgresql/pwfile
		sudo -u postgres -H /usr/lib/postgresql/9.1/bin/initdb \
			--pgdata=/var/lib/postgresql/9.1/main --pwfile=/var/lib/postgresql/pwfile \
			--username=postgres --encoding=unicode --auth=trust >/dev/null
	fi

	echo "Starting PostgreSQL server..."
	/etc/init.d/postgresql start

	if [ -f /var/lib/postgresql/pwfile ]; then
		PG_PASSWORD=$(cat /var/lib/postgresql/pwfile)
		echo "|------------------------------------------------------------------|"
		echo "| PostgreSQL User: postgres, Password: ${PG_PASSWORD}              |"
		echo "|                                                                  |"
		echo "| To remove the PostgreSQL login credentials from the logs, please |"
		echo "| make a note of password and then delete the file pwfile          |"
		echo "| from the data store.                                             |"
		echo "|------------------------------------------------------------------|"
	fi
	tail -F /var/log/postgresql/postgresql-9.1-main.log
}

appHelp () {
	echo "Available options:"
	echo " app:start          - Start the postgresql server and watch the log (default)"
	echo " app:help           - Displays the help"
	echo " [command]          - Execute the specified linux command eg. bash."
}

case "$1" in
	app:start)
		appStart
		;;
	app:help)
		appHelp
		;;
	*)
		if [ -x $1 ]; then
			$1
		else
			prog=$(which $1)
			if [ -n "${prog}" ] ; then
				shift 1
				$prog $@
			else
				appHelp
			fi
		fi
		;;
esac

exit 0
