# Copyright 2022-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=8

inherit acct-user user-info

ACCT_USER_ID=452
ACCT_USER_HOME=/var/lib/vdr
ACCT_USER_GROUPS=( vdr audio cdrom video )

DESCRIPTION="VDR (VideoDiskRecorder) service user"
IUSE="graphlcd legacy-homedir remote serial systemd"

acct-user_add_deps

REQUIRED_USE="
	remote? ( systemd )
"

RDEPEND+="
	graphlcd? (
		acct-group/lp
		acct-group/usb
	)
	remote? (
		systemd? (
			acct-group/input
		)
	)
	serial? (
		systemd? (
			acct-group/dialout
		)
		!systemd? (
			acct-group/uucp
		)
	)
"

pkg_setup() {
	# if user wants to preserve his existing vdr installation,
	# he can set USE=legacy-homedir
	use legacy-homedir && ACCT_USER_HOME=/var/vdr

	# media-plugins/vdr-graphlcd
	use graphlcd && ACCT_USER_GROUPS+=( lp usb )

	# media-plugins/vdr-remote, _only_ when systemd is installed
	if use remote; then
		if use systemd; then
			ACCT_USER_GROUPS+=( input )
		else
			einfo "use-flag remote has no effect on systemd systems"
		fi
	fi

	# media-plugins/vdr-serial: add group to access /dev/ttyS*
	# on systemd systems: add "dialout"
	# non-systemd systems: add "uucp"
	if use serial; then
		if use systemd; then
			ACCT_USER_GROUPS+=( dialout )
		else
			ACCT_USER_GROUPS+=( uucp )
		fi
	fi
}

pkg_preinst() {
	# if useflag legacy-homedir is _not_ set, check if user vdr exists and what his homedir is
	if ! use legacy-homedir; then
		local EXISTING_HOME=$(egethome vdr)
		if [[ "${EXISTING_HOME}" = "/var/vdr" ]]; then
			ewarn "The user \"vdr\" exists on this system, his current home directory is \"/var/vdr\""
			ewarn "The new default home directory for user vdr is \"/var/lib/vdr\""
			ewarn "You have three options to continue:"
			ewarn " - set USE=legacy-homedir for ${CATEGORY}/${PN} to continue to use /var/vdr"
			ewarn " - move /var/vdr to /var/lib/vdr manually and repeat to install ${CATEGORY}/${PN}"
			ewarn " - move /var/vdr to /var/vdr.old or anywhere else (to keep it as your backup), repeat to"
			ewarn "   install ${CATEGORY}/${PN} and let the installation create a fresh /var/lib/vdr"
			ewarn "the emerge will stop here."
			die "user action required"
		fi
	fi
	acct-user_pkg_preinst
}