#!/bin/sh
#
# Registers or unregisters OpenRC services into the specified
# runlevel. This works by specifying three arguments as follows:
#
# service_name		runlevel	register
# --------------------------------------------------
# dbus			default		boolean
# --------------------------------------------------
#
# Arguments:	$ACTION = [run/targets]
#		$TARGET	= [post-install/pre-remove]
#		$PKGNAME
#		$VERSION
#		$UPDATE = [yes/no]
#
ACTION="$1"
TARGET="$2"
PKGNAME="$3"
VERSION="$4"
UPDATE="$5"

export PATH="$PATH:/usr/local/bin"

initdir=etc/init.d
metadatadir=var/db/xbps/metadata/${PKGNAME}

case "$ACTION" in
targets)
	echo "post-install pre-remove"
	;;
run)
	[ ! -x sbin/rc-update ] && exit 0
	[ ! -x sbin/rc-service ] && exit 0
	[ -z "$openrc_services" ] && exit 1

	if [ "$TARGET" = "pre-remove" ]; then
		rcupdate_args="del"
	elif [ "$TARGET" = "post-install" ]; then
		rcupdate_args="add"
	else
		exit 1
	fi

	[ ! -f etc/fstab ] && touch etc/fstab

	set -- ${openrc_services}
	while [ $# -gt 0 ]; do
		if [ "$TARGET" = "post-install" ]; then
			case "$3" in
			[Ff][Aa][Ll][Ss][Ee]|[Oo][Ff]|0)
				skip_service=1
				;;
			[Tt][Rr][Uu][Ee]|[Oo][Nn]|1)
				unset skip_service
				;;
			esac
			if [ -n "$skip_service" ]; then
			# The service shouldn't be registered, so just show a message
			# explaining how to add it in the future.
				cat <<_EOF
=========================================================================

The service '${1}' from '${PKGNAME}-${VERSION}' won't be registered
into the runlevel '${2}', therefore it will remain disabled at boot.

To start it at boot time, use the following command:

	$ rc-update add ${1} ${2}

To disable it again use:

	$ rc-update del ${1} ${2}

To start the service:

	$ rc-service start ${1}

=========================================================================
_EOF
				shift; shift; shift;
				continue
			fi
			# Register service.
			if [ "$UPDATE" = "no" ]; then
				sbin/rc-update add ${1} ${2}
			fi
		else
			#
			# pre-remove
			#
			$initdir/$1 -q status
			rv=$?

			if [ "$UPDATE" = "no" ]; then
				#
				# If the service is running inform the user that it should be
				# stopped before removing the package!
				#
				if [ $rv -eq 0 ]; then
					echo "ERROR: service '${1}' from '${PKGNAME}-${VERSION}' must be stopped!"
					echo "ERROR: please stop the service with 'rc-service $1 stop' and try again."
					error=1
				else
					# Unregister the service.
					sbin/rc-update del ${1} ${2}
				fi
			else
				if [ $rv -eq 0 ]; then
					echo "WARNING: service '${1}' from '${PKGNAME}-${VERSION}' must be restarted!"
					echo "WARNING: you can restart it with 'rc-service $1 restart'."
				fi
			fi
		fi
		shift; shift; shift;
	done
	[ -n "$error" ] && exit $error
	;;
*)
	exit 1
	;;
esac

exit 0
