#!/bin/sh
set -e

fix_elogind_notification_fd() {
	if [ -f /etc/s6-rc/sv/elogind/notification-fd ] && \
	   ! grep -qx 3 /etc/s6-rc/sv/elogind/notification-fd 2>/dev/null; then
		printf '3\n' > /etc/s6-rc/sv/elogind/notification-fd
	fi
}

# Soft dep for console getty (tty1 comes from s6-bundle-misc).
ensure_tty1_udevadm_dep() {
	if [ -d /etc/s6-rc/sv/tty1 ]; then
		mkdir -p /etc/s6-rc/sv/tty1/dependencies.d
		: > /etc/s6-rc/sv/tty1/dependencies.d/udevadm
	fi
}

# Drop stale policy that older versions used to seed into default/boot.
# Do not mkdir bundle dirs — that creates husks without type.
scrub_legacy_membership() {
	if [ -d /etc/s6-rc/sv/udev ] && [ ! -L /etc/s6-rc/sv/udev ]; then
		rm -rf /etc/s6-rc/sv/udev
	fi
	rm -f /etc/s6-rc/sv/boot/contents.d/udev \
	      /etc/s6-rc/sv/boot/contents.d/udevd \
	      /etc/s6-rc/sv/boot/contents.d/udevadm \
	      /etc/s6-rc/bundles/boot/contents.d/udev \
	      /etc/s6-rc/bundles/boot/contents.d/udevd \
	      /etc/s6-rc/bundles/boot/contents.d/udevadm
	for f in dbus elogind dhcpcd dmesg late-start mount-netdev tty1; do
		rm -f "/etc/s6-rc/sv/default/contents.d/$f" \
		      "/etc/s6-rc/bundles/default/contents.d/$f"
	done
}

case "$1" in
	configure)
		if [ -f /etc/s6-rc/s6-db-reload.conf ] && \
		   [ ! -f /etc/s6-rc/config/s6-db-reload.conf ]; then
			mkdir -p /etc/s6-rc/config
			mv /etc/s6-rc/s6-db-reload.conf /etc/s6-rc/config/s6-db-reload.conf
		fi

		if ! id s6log >/dev/null 2>&1; then
			useradd -r -s /usr/sbin/nologin s6log
		fi

		fix_elogind_notification_fd
		ensure_tty1_udevadm_dep
		scrub_legacy_membership

		if [ -x /usr/lib/s6-helper/s6-helper ]; then
			/usr/lib/s6-helper/s6-helper recompile
		elif [ -x /usr/sbin/s6-helper ]; then
			s6-helper recompile
		else
			echo "warning: s6-rc-services: no s6-helper; skip recompile" >&2
		fi
		;;

	abort-upgrade|abort-remove|abort-deconfigure)
		;;

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

#DEBHELPER#

exit 0
