+#!/bin/bash
+# simple helper, mainly for testing the provided Systemd units.
+
+set -eu
+export LC_ALL=C
+
+: ${EXIM=exim}
+: ${EXIM_LOGDIR=/var/log/exim}
+: ${EXIM_SPOOLDIR=/var/spool/exim}
+
+# Packagers should install to $(systemd-path systemd-system-unit)
+# which mostly is something like /lib/systemd/system
+dstdir=
+
+usage="$0 [OPTIONS] variant...
+ This simple script installs Systemd unit files to the desired destination, replacing
+ the {{Placeholder}}s.
+
+ VARIANT: one of daemon, inet, socket, maintainance, queuerunner
+
+ OPTIONS:
+ --help print this help and exit cleanly
+ --uninstall|-u uninstall the installed files
+ --dstdir|-d DIR the destination directory (mandatory, use 'DEFAULT'
+ to use Systemd's default location (`systemd-path systemd-system-conf`)
+
+ Placeholders:
+ {{exim}} from \$EXIM ($EXIM)
+ {{logdir}} from \$EXIM_LOGDIR ($EXIM_LOGDIR)
+ {{spooldir}} from \$EXIM_SPOOLDIR ($EXIM_SPOOLDIR)
+"
+
+
+tmp=$(getopt -n $0 -o d:n --long dstdir:,help,uninstall -- "$@")
+eval set -- "$tmp"
+while true
+do
+ o=$1; shift
+ case $o in
+ -d|--dstdir) dstdir=$1; shift;;
+ --help) echo "$usage"; exit;;
+ -n|--uninstall) uninstall=1;;
+ --) break
+ esac
+done
+
+if [[ -v uninstall ]]
+then
+ if ! [[ -r .installed ]]
+ then
+ echo "$0: noting to uninstall (.installed is empty or isn't readable)" >&2
+ exit
+ fi
+
+ rm -vf $(<.installed)
+ rm -f .installed
+ exit
+fi
+
+case $dstdir in
+ DEFAULT) dstdir=$(systemd-path systemd-system-conf);;
+ "") echo "$0: --dstdir is mandatory" >&2; exit 1;;
+ *) ;;
+esac
+
+if (( $# == 0 ))
+then echo "$0: need variant" >&2; exit 1;
+fi
+
+function xform() {
+ sed -e "s|{{exim}}|${EXIM:?}|g" \
+ -e "s|{{logdir}}|${EXIM_LOGDIR:?}|g" \
+ -e "s|{{spooldir}}|${EXIM_SPOOLDIR:?}|g"
+}
+
+for dir in ${@:?need source dir(s)}
+do
+ echo "# $dir"
+ for src in "$dir"/*
+ do
+ dst="$dstdir/${src##*/}"
+ echo "installing $dst"
+ xform <"$src" >"$dst"
+ echo $dst >> .installed
+ done
+done
+
+if [[ $dstdir == $(systemd-path systemd-system-conf) ]]
+then
+ echo "# reloading systemd configuration"
+ systemctl daemon-reload
+fi