#!/bin/sh

set -e

runitsvdir=/etc/sv
systemdsvdir=/lib/systemd/system
systemdetcdir=/etc/systemd/system

is_down () {
# stat --> run | down
if [ -e "/etc/sv/$service/supervise/stat" ]; then
	stat=$(cat "/etc/sv/$service/supervise/stat")
	if [ $stat != down ]; then
		return 1
	fi
else
	return 0
fi
}

# cleanup all sv when this package is removed
purge_all_sv () {
	for service in /usr/share/runit/sv/* ; do
	if [ -e "$runitsvdir/$service" ] && is_down ; then
		# disable the service || remove user preference (disabled)
		if [ -h "/etc/service/$service" ]; then
			rm "/etc/service/$service"
		elif [ -h "/etc/service/.$service" ]; then
			rm "/etc/service/.$service"
		fi
		# now remove the service directory
		rm -rf "$runitsvdir/$service"
	fi	
	done
}

# purge the single service when the package that ships the
# corresponding systemd service is purged
purge_sv () {
	for service in /usr/share/runit/sv/* ; do
	if [ -e "$runitsvdir/$service" ] ; then
		if [ ! -e "$systemdsvdir/$service.service" ] && [ ! -e "$systemdetcdir/$service.service" ] ; then
			# the package that ships the systemd $service is purged:
			# stop and purge the runit service
			if [ -h "/etc/service/$service" ]; then
			sv d $service >/dev/null || true
			rm "/etc/service/$service"
			elif [ -h "/etc/service/.$service" ]; then
			rm "/etc/service/.$service"
			fi
			rm -rf "$runitsvdir/$service"
		fi
	fi
	done
}

case "$1" in
    purge)
	purge_all_sv
    ;;

    triggered)
	purge_sv
    ;;

    remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
    ;;

    *)
        echo "postrm called with unknown argument \`$1'" >&2
        exit 1
    ;;
esac


#DEBHELPER#

exit 0
