#!/bin/sh

# first let's make sure the the postgres user does
# not currently exist

# set -e

PG_GID=`/usr/bin/nifind -p //groups/postgres | grep "gid:.[0-9]" | sed 's/.*: //' | sed 's/ //'`
	
# Group Doesn't Exist, create it 
if ! test $PG_GID; then
	# loop through the '400's' until we find an available gid
	X=401
	until test $PG_GID; do
		TEST_GID=`/usr/bin/nidump -r /groups / | grep $X `
		if ! test "$TEST_GID"; then
			PG_GID=$X
		fi
		X=`expr $X + 1`
	done

	sudo /usr/bin/niutil -create / /groups/postgres
	sudo /usr/bin/niutil -createprop / /groups/postgres gid $PG_GID
fi

# Display the GID for user information
echo Postgres Group ID: $PG_GID

# Now that the group exists, create the user

PG_UID=`/usr/bin/nifind -p //users/postgres | grep "^uid:.[0-9]" | sed 's/.*: //' | sed 's/ //'`
	
# User Doesn't Exist, create it 
if ! test $PG_UID; then
	# loop through the '400's' until we find an available uid (start with the GID)
	X=$PG_GID
	until test $PG_UID; do
		TEST_UID=`/usr/bin/nidump -r /users / | grep "\"uid\" \= \( \"$X\" \);" `
		if ! test "$TEST_UID"; then
			PG_UID=$X
		fi
		X=`expr $X + 1`
	done

	sudo /usr/bin/niutil -create / /users/postgres
	sudo /usr/bin/niutil -createprop / /users/postgres gid $PG_GID
	sudo /usr/bin/niutil -createprop / /users/postgres uid $PG_UID
	sudo /usr/bin/niutil -createprop / /users/postgres home "/Library/PostgreSQL8"
fi

sudo /usr/bin/niutil -resync /

# Display the GID for user information
echo Postgres User ID: $PG_UID

echo The Postgres user is configured, but you should set a 
echo password on the newly created account. \(sudo passwd postgres\)

# Set the permissions on the directories

if test ! -d /Library/PostgreSQL8/log; then
	sudo mkdir /Library/PostgreSQL8/log
fi
sudo touch /Library/PostgreSQL8/log/PostgreSQL8.log
if test ! -f /Library/Logs/PostgreSQL8.log; then 
	sudo ln -s /Library/PostgreSQL8/log/PostgreSQL8.log /Library/Logs/PostgreSQL8.log 
fi
sudo chown -R root:admin /Library/PostgreSQL8
sudo chown -R root:admin /Applications/PostgreSQL
sudo chown -R postgres:admin /Library/PostgreSQL8/log
sudo chmod -R 777 /Library/PostgreSQL8/doc/*

if test ! -d /Library/PostgreSQL8/data; then
	sudo mkdir /Library/PostgreSQL8/data
	sudo chown -R postgres:postgres /Library/PostgreSQL8/data
	su -m postgres -c '/Library/PostgreSQL8/bin/initdb -D /Library/PostgreSQL8/data'
fi

echo Permissions have been altered to allow the automated startup 
echo of the PostgreSQL server.

