# Copyright (C)2009-2010 D. R. Commander
# Copyright (C)2009 Sun Microsystems, Inc.
#
# This library is free software and may be redistributed and/or modified under
# the terms of the wxWindows Library License, Version 3.1 or (at your option)
# any later version.  The full license is in the LICENSE.txt file included
# with this distribution.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# wxWindows Library License for more details.

#!/bin/sh

error()
{
	echo $1
	exit -1
}

if [ ! "`id -u`" = "0" ]; then
	error "This command must be run as root"
fi

PKGNAME={__APPNAME}
MACPKGNAME=com.$PKGNAME.$PKGNAME
RCPT=/Library/Receipts/$PKGNAME.pkg

LSBOM=
if [ -d $RCPT ]; then
	LSBOM='lsbom -s -f -l '$RCPT'/Contents/Archive.bom'
else
	LSBOM='pkgutil --files '$MACPKGNAME
fi

echo Removing files ...
$LSBOM >/dev/null || error "Could not list package contents"
RETCODE=0
PWD=`pwd`
cd /
$LSBOM | while read line; do
	if [ ! -d "$line" ]; then rm "$line" 2>&1 || RETCODE=-1; fi
done
cd $PWD

echo Removing directories ...
rmdir /opt/$PKGNAME/bin 2>&1 || RETCODE=-1
if [ -d /opt/$PKGNAME/bin ]; then
	rmdir /opt/$PKGNAME/bin 2>&1 || RETCODE=-1
fi
if [ -d /opt/$PKGNAME/lib ]; then
	rmdir /opt/$PKGNAME/lib 2>&1 || RETCODE=-1
fi
if [ -d /opt/$PKGNAME/include ]; then
	rmdir /opt/$PKGNAME/include 2>&1 || RETCODE=-1
fi
rm /opt/$PKGNAME/lib32 2>&1 || RETCODE=-1
rm /opt/$PKGNAME/lib64 2>&1 || RETCODE=-1
if [ -d /opt/$PKGNAME/man/man1 ]; then
	rmdir /opt/$PKGNAME/man/man1 2>&1 || RETCODE=-1
fi
if [ -d /opt/$PKGNAME/man ]; then
	rmdir /opt/$PKGNAME/man 2>&1 || RETCODE=-1
fi
rmdir /opt/$PKGNAME 2>&1 || RETCODE=-1
rmdir /Library/Documentation/$PKGNAME 2>&1 || RETCODE=-1

if [ -d $RCPT ]; then
	echo Removing package receipt $RCPT ...
	rm -r $RCPT 2>&1 || RETCODE=-1
else
	echo Forgetting package $MACPKGNAME
	pkgutil --forget $MACPKGNAME
fi

exit $RETCODE
