#!/bin/sh
# 	postrm -- Post removal script for appweb
#
#	Copyright (c) Embedthis Software LLC, 2003-2012. All Rights Reserved.
#

BLD_PRODUCT=appweb
BLD_NAME="Embedthis Appweb"
BLD_CFG_PREFIX=/etc/appweb
BLD_MOD_PREFIX=/usr/lib/appweb/modules
BLD_LIB_PREFIX=/usr/lib/appweb/lib
BLD_BIN_PREFIX=/usr/lib/appweb/bin

remove() {
	local cdir=`pwd`

	if [ -x $BLD_CFG_PREFIX ] ; then
		cd $BLD_CFG_PREFIX
		removeIntermediateFiles access.log error.log '*.log.old' .dummy $BLD_PRODUCT.conf .*.log make.log
		cleanDir
		cd $cdir 
		rmdir $BLD_CFG_PREFIX 2>/dev/null || true
	fi

	if [ -x $BLD_MOD_PREFIX ] ; then
		cd $BLD_MOD_PREFIX
		removeIntermediateFiles access.log error.log '*.log.old' .dummy $BLD_PRODUCT.conf .*.log make.log
		cleanDir
		cd $cdir 
		rmdir $BLD_MOD_PREFIX 2>/dev/null || true
	fi

	if [ -x $BLD_LIB_PREFIX ] ; then
		cd $BLD_LIB_PREFIX
		removeIntermediateFiles access.log error.log '*.log.old' .dummy $BLD_PRODUCT.conf .*.log make.log
		cleanDir
		cd $cdir 
		rmdir $BLD_LIB_PREFIX 2>/dev/null || true
	fi

	if which update-rc.d >/dev/null 2>&1  ; then
		rm -f /etc/init.d/appweb
		update-rc.d appweb remove >/dev/null
	fi
}

purge() {
	local cdir=`pwd`

	remove
	if [ -x $BLD_CFG_PREFIX ] ; then
		cd $BLD_CFG_PREFIX
		removeIntermediateFiles access.log error.log '*.log.old' .dummy \
			$BLD_PRODUCT.conf .appweb_pid.log '.httpClient_pid.log' make.log \
			appweb.conf groups.db mime.types php.ini server.crt server.key \
			server.key.pem users.db
		cleanDir
		cd $cdir 
		rmdir $BLD_CFG_PREFIX 2>/dev/null || true
	fi
}

#
#	Cleanup empty directories. Usage: cleanDir directory
#
cleanDir() {
	local count f

	echo "Cleaning `pwd` ..."
	if [ `pwd` = "/" ] ; then
		echo "Configuration error: clean directory was '/'"
		return
	fi
	find . -type d -print | sort -r | grep -v '^\.$' | while read d
	do
		count=`ls "$d" | wc -l | sed -e 's/ *//'`
		[ "$count" = "0" ] && rmdir "$d"
		if [ "$count" != "0" ] ; then
			f=`echo "$d" | sed -e 's/\.\///'`
			echo "Directory `pwd`/${f}, still has user data"
		fi
	done 
}

#
#	Cleanup intermediate files
#
removeIntermediateFiles() {

	find `pwd` -type d -print | while read d
	do
		before=`pwd`
		cd "${d}"
		eval rm -f $*
		cd "${before}"
	done
}

#
#	Main
#
cd /
action=$1
case $action in
	remove)					# when new
		remove
		;;
	purge)					# when new
		purge
		;;
	failed-upgrade)			# when new
		oldVersion=$2
		;;
	abort-upgrade)			# when new
		oldVersion=$2
		;;
	upgrade)				# when old
		newVersion=$2
		;;
	disappear)				# when disappearing
		# disappear overwriter overwriter-version
		;;
esac

echo
echo "$BLD_NAME $action successful"
exit 0
