# $NetBSD: INSTALL,v 1.3 2007/08/22 02:19:15 jlam Exp $

# Generate a +ROOT_ACTIONS script that runs certain actions that require
# superuser privileges.
#
case "${STAGE},$1" in
UNPACK,|UNPACK,+ROOT_ACTIONS)
	${CAT} > ./+ROOT_ACTIONS << 'EOF'
#!@SH@
#
# +ROOT_ACTIONS - run actions requiring superuser privileges
#
# Usage: ./+ROOT_ACTIONS ADD|REMOVE [metadatadir]
#
# This script runs certain actions that require superuser privileges.
# If such privileges are not available, then simply output a message
# asking the user to run this script with the appropriate elevated
# privileges.
#
# Lines starting with "# SYMLINK: " are data read by this script that
# name the source paths and corresponding symlink that is managed by
# this script.  If the symlink path is relative, then it is taken to be
# relative to ${PKG_PREFIX}.  The source path is always unchanged.
#
#	# SYMLINK: /dev/rcd0a ${EMULSUBDIR}/dev/cdrom
#

CAT="@CAT@"
CHMOD="@CHMOD@"
ECHO="@ECHO@"
ID="@ID@"
LN="@LN@"
PWD_CMD="@PWD_CMD@"
RM="@RM@"
SED="@SED@"
TEST="@TEST@"

SELF=$0
ACTION=$1

CURDIR=`${PWD_CMD}`
PKG_METADATA_DIR="${2-${CURDIR}}"
: ${PKGNAME=${PKG_METADATA_DIR##*/}}
: ${PKG_PREFIX=@PREFIX@}

ROOT_ACTIONS_COOKIE="./+ROOT_ACTIONS_done"
EUID=`${ID} -u`

exitcode=0
case $ACTION,$EUID in
ADD,0)
	${ECHO} "" > ${ROOT_ACTIONS_COOKIE}
	${CHMOD} g+w ${ROOT_ACTIONS_COOKIE}
	${SED} -n "/^\# SYMLINK: /{s/^\# SYMLINK: //;p;}" ${SELF} |
	while read src dst; do
		case $src in
		"")	continue ;;
		esac
		case $dst in
		"")	continue ;;
		[!/]*)	dst="${PKG_PREFIX}/$dst" ;;
		esac

		if ${TEST} ! -e "$dst"; then
			${ECHO} "${PKGNAME}: linking $dst -> $src"
			${LN} -fs "$src" "$dst"
		else
			${ECHO} "${PKGNAME}: $dst already exists"
		fi
	done
	;;

REMOVE,0)
	${SED} -n "/^\# SYMLINK: /{s/^\# SYMLINK: //;p;}" ${SELF} |
	while read src dst; do
		case $src in
		"")	continue ;;
		esac
		case $dst in
		"")	continue ;;
		[!/]*)	dst="${PKG_PREFIX}/$dst" ;;
		esac

		if ${TEST} -h "$dst"; then
			${ECHO} "${PKGNAME}: removing $dst"
			${RM} -f "$dst"
		fi
	done
	${RM} -f ${ROOT_ACTIONS_COOKIE}
	;;

ADD,*)
	if ${TEST} ! -f ${ROOT_ACTIONS_COOKIE}; then
		${CAT} << EOM
==============================================================================
Please run the following command with superuser privileges to complete
the installation of ${PKGNAME}:

    cd ${PKG_METADATA_DIR} && ${SELF} ADD

==============================================================================
EOM
	fi
	;;

REMOVE,*)
	if ${TEST} -f ${ROOT_ACTIONS_COOKIE}; then
		${CAT} << EOM
==============================================================================
Please run the following command with superuser privileges to begin the
removal of ${PKGNAME}:

    cd ${PKG_METADATA_DIR} && ${SELF} REMOVE

Then, please run pkg_delete(1) again to complete the removal of this
package.

==============================================================================
EOM
		exitcode=1
	fi
	;;
esac
exit $exitcode

EOF
	${SED} -n "/^\# SYMLINK: /p" ${SELF} >> ./+ROOT_ACTIONS
	${CHMOD} +x ./+ROOT_ACTIONS
	;;
esac

# SYMLINK: /dev/rcd0a @EMULSUBDIR@/dev/cdrom
# SYMLINK: /dev/rfd0a @EMULSUBDIR@/dev/fd0
# SYMLINK: /dev/wd0d @EMULSUBDIR@/dev/hda
# SYMLINK: /dev/wd1d @EMULSUBDIR@/dev/hdb
# SYMLINK: /dev/wd2d @EMULSUBDIR@/dev/hdc
# SYMLINK: /dev/wd3d @EMULSUBDIR@/dev/hdd
# SYMLINK: /dev/sd0d @EMULSUBDIR@/dev/hde
# SYMLINK: /dev/sd1d @EMULSUBDIR@/dev/hdf
# SYMLINK: /dev/sd2d @EMULSUBDIR@/dev/hdg
# SYMLINK: /dev/sd3d @EMULSUBDIR@/dev/hdh
# SYMLINK: /dev/sd4d @EMULSUBDIR@/dev/hdi
# SYMLINK: /dev/ttyE0 @EMULSUBDIR@/dev/tty1
# SYMLINK: /dev/ttyE1 @EMULSUBDIR@/dev/tty2
# SYMLINK: /dev/ttyE2 @EMULSUBDIR@/dev/tty3
# SYMLINK: /dev/ttyE3 @EMULSUBDIR@/dev/tty4
# SYMLINK: /dev/ttyE4 @EMULSUBDIR@/dev/tty5
# SYMLINK: /dev/ttyE5 @EMULSUBDIR@/dev/tty6
# SYMLINK: /dev/ttyE6 @EMULSUBDIR@/dev/tty7
# SYMLINK: /dev/ttyE7 @EMULSUBDIR@/dev/tty8
# SYMLINK: tty1 @EMULSUBDIR@/dev/tty0

case "${STAGE}" in
POST-INSTALL)
	${TEST} ! -x ./+ROOT_ACTIONS ||
		./+ROOT_ACTIONS ADD ${PKG_METADATA_DIR}
	;;
esac
