summaryrefslogtreecommitdiff
blob: 6bc48975c4b2be58c593527f3bf11530534a6e32 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
# Copyright 1999-2005 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/eclass/mailer.eclass,v 1.3 2005/04/25 16:20:45 slarti Exp $

#
# Original Author: Fernando J. Pereda <ferdy@gentoo.org>
# Purpose: eclass to intarface with net-mail/mailer-config, used to manage
# multiple MTA's installed on a Gentoo system.
#

ECLASS="mailer"
INHERITED="$INHERITED $ECLASS"
IUSE="${IUSE} mailwrapper"
RDEPEND="${RDEPEND}
	mailwrapper? ( net-mail/mailer-config
		>=net-mail/mailwrapper-0.2.1-r1 )
	!mailwrapper? ( !virtual/mta )"
PROVIDE="${PROVIDE} virtual/mta"

EXPORT_FUNCTIONS pkg_postinst pkg_postrm

# Gets current mailer profile
mailer_get_current() {
	echo $(mailer-config --get-current-profile)
	return $?
}

# Installs a new mailer.conf from FILESDIR
mailer_install_conf() {
	local newname

	if [[ ${PN} == "mailer-config" ]] ; then
		newname="default"
	else
		newname=${P}
	fi

	# If the newfile does not exist or the version in the system
	#  differs from the one in FILESDIR/ (update); install it
	if [[ ! -f /etc/mail/${newname}.mailer ]] || \
		! diff /etc/mail/${newname}.mailer "${FILESDIR}/mailer.conf" > /dev/null ; then
		insinto /etc/mail/
		newins "${FILESDIR}/mailer.conf" ${newname}.mailer
	fi
}

# Set current mailer profile
mailer_set_profile() {
	local newprofile=${1:-${P}}

	ebegin "Setting the current mailer profile to \"${newprofile}\""
		mailer-config --set-profile ${newprofile} >/dev/null || die
	eend $?
}

# Wipe unused configs
mailer_wipe_confs() {
	local x i

	ebegin "Wiping all non-used mailer profiles"
		for x in /etc/mail/*.mailer ; do
			i=${x##*/}
			i=${i%.mailer}

			[[ ${i} == ${P} ]] && continue
			[[ ${i} == "default" ]] && continue

			if ! has_version '=mail-mta/${i}*' ; then
				rm ${x}
			fi
		done
	eend 0
}

mailer_pkg_postinst() {
	use mailwrapper && mailer_set_profile
}

mailer_pkg_postrm() {
	if use mailwrapper ; then
		mailer_wipe_confs

		# We are removing the current profile, switch back to default
		[[ $(mailer_get_current) == ${P} ]] &&	mailer_set_profile default
	fi
}