#!/bin/sh
#
# $FreeBSD: ports/astro/setiathome/pkg-install,v 1.8 2001/08/24 13:39:27 dwcjr Exp $
#
# Set up the work area and run SETI@home to login or register.
#

[ $# != 2 ] && exit 1
[ -z "${PKG_PREFIX}" ] && exit 1
[ -n "${BATCH}" ] && exit 0

PKG_NAME=$1
PKG_ACTION=$2

# override these variables in ${PREFIX}/etc/rc.setiathome.conf
seti_wrkdir=/var/db/setiathome		# working directory
seti_user=nobody			# user id to run under
seti_maxprocs=$(sysctl -n hw.ncpu)	# max. number of processes to start

rcconf_dir=${PKG_PREFIX}/etc
rcconf_file=rc.setiathome.conf
rcconf_path=${rcconf_dir}/${rcconf_file}

if [ -f ${rcconf_path} ]; then
	. ${rcconf_path}
fi

rc_dir=${PKG_PREFIX}/etc/rc.d
rc_file=setiathome.sh
rc_path=${rc_dir}/${rc_file}

ncpu=$(sysctl -n hw.ncpu)

case "$PKG_ACTION" in
POST-INSTALL)

echo "****  SETI@home requires a working directory for temporary files and a"
echo "      brief registration process."
echo
echo "      Would you like to set up a working directory in ${seti_wrkdir},"
	if [ ${seti_maxprocs} -gt 1 ]; then
echo "      register with SETI@home, and let me arrange for ${ncpu} setiathome"
		if [ ${ncpu} -eq ${seti_maxprocs} ]; then
echo "      processes (one for each of your ${ncpu} CPUs) to be started"
echo -n "      automatically as user \`${seti_user}'? [Y/n] "
		else
echo "      processes (as configured) to be started automatically as user"
echo -n "      \`${seti_user}'? [Y/n] "
		fi
	else
echo "      register with SETI@home, and let me arrange for setiathome to be"
echo -n "      started automatically as user \`${seti_user}'? [Y/n] "
	fi
	read a
echo
	if [ "X$a" = "XN" -o "X$a" = "Xn" ]; then
echo "****  Please set up the working directory yourself.  You may use"
echo "            ${rc_path} register"
echo "      to do so. See setiathome(1) for details."
		exit 0
	fi
	${rc_path} register
	if [ ! -f ${seti_wrkdir}/user_info.sah ]; then
echo "unable to start setiathome: it seems registration or login failed."
echo "See setiathome(1) for details."
		exit 0
	fi
	${rc_path} start > /dev/null
echo
echo "****  Congratulations!  Your system now participates in the search for"
echo "      extra-terrestrial intelligence.  Be sure to visit the home page"
echo "      at http://setiathome.ssl.berkeley.edu/"
echo "      See setiathome(1) for further details."
	;;

DEINSTALL)
	if [ ! -d ${seti_wrkdir} ]; then
		exit 0
	fi

	${rc_path} stop > /dev/null

echo "****  SETI@home working directory and temporary files have to be"
echo "      removed to complete the deinstallation process.  Of course,"
echo "      you may prefer to keep them for futher researchs?  Would you"
echo "      like to remove it as well as all temporary files it may"
echo -n "      contains? [y/N] "
	read a
echo
	if [ "X$a" != "XY" -a "X$a" != "Xy" ]; then
echo "****  SETI@home working directory and temporary files left untouched."
		exit 0
	fi
	for i in ${seti_wrkdir}/.??* ${seti_wrkdir}/*; do
		case "${i}" in
		"${seti_wrkdir}/.??*"|"${seti_wrkdir}/*")
			continue
			;;
		*/.tkseti*|*.sah)
			[ -f ${i} ] || continue
			rm -f ${i}
			;;
		*)
			[ -d ${i} ] || continue
			for j in ${seti_wrkdir}/*; do
				case "${j}" in
				"${seti_wrkdir}/*")
					continue
					;;
				*/.tkseti*|*.sah)
					[ -f ${j} ] || continue
					rm -f ${j}
					;;
				esac
			done
			rmdir ${i}
			;;
		esac
	done
	rmdir ${seti_wrkdir}
	if [ -d ${seti_wrkdir} ]; then
echo "****  SETI@home working directory can't be removed since it contains"
echo "      non SETI@home files or directories.  You have to remove it"
echo "      manually.  You can use"
echo "            rm -rf ${seti_wrkdir}"
echo "      to do so, but think about it twince before."
	else
echo "****  SETI@home working directory and temporary files removed."
	fi
	;;

PRE-INSTALL|POST-DEINSTALL)
	;;

*)
echo "usage: $0 <PKG_NAME> {PRE-INSTALL|POST-INSTALL|DEINSTALL|POST-DEINSTALL}" >&2
	exit 1
	;;
esac

exit 0
