void-packages/srcpkgs/xbps-triggers/files/systemd-service

116 lines
2.7 KiB
Bash
Executable File

#!/bin/sh
#
# Enable and disable systemd services. The systemd_services environmental
# variable is expected to be set as follows:
#
# SERVICE_NAME RESTART
# foo.service off
# blah.service on
#
# i.e systemd_services='foo.service off blah.service on'
#
# Arguments: $ACTION = [run/targets]
# $TARGET = [post-install/pre-remove]
# $PKGNAME
# $VERSION
# $UPDATE = [yes/no]
#
ACTION="$1"
TARGET="$2"
PKGNAME="$3"
VERSION="$4"
UPDATE="$5"
export PATH="$PATH:/usr/local/bin"
case "$ACTION" in
targets)
echo "post-install pre-remove"
;;
run)
[ ! -x bin/systemctl ] && exit 0
[ -z "${systemd_services}" ] && exit 1
systemd-notify --booted
if [ $? -eq 0 ]; then
systemd_booted=yes
fi
set -- ${systemd_services}
while [ $# -gt 0 ]; do
_srv="$1"
case "$2" in
[Yy][Ee][Ss]|[Tt][Rr][Uu][Ee]|[Oo][Nn]|1)
restart=1
;;
*)
unset restart
;;
esac
if [ "$TARGET" = "pre-remove" ]; then
if [ "$UPDATE" = "no" ]; then
# package is being removed.
# stop and disable the unit.
echo "Stopping systemd service ${_srv}..."
systemctl stop ${_srv} >/dev/null 2>&1 || :
echo "Disabling systemd service ${_srv}..."
systemctl --no-reload disable ${_srv} >/dev/null 2>&1 || :
else
# Package update, just disable the unit.
echo "Disabling systemd service ${_srv}..."
systemctl --no-reload disable ${_srv} >/dev/null 2>&1 || :
fi
elif [ "$TARGET" = "post-install" ]; then
if [ "$UPDATE" = "no" ]; then
# package is being installed.
# enable (but don't start) the unit by default.
echo "Enabling systemd service ${_srv}..."
systemctl enable ${_srv} >/dev/null 2>&1 || :
if [ -n "$systemd_booted" ]; then
# reload systemd if running.
systemctl daemon-reload >/dev/null 2>&1 || :
fi
cat <<_EOF
==========================================================================
The service "${_srv}" has been enabled by default,
that means that it will be started in next boot. To start it immediately,
execute the following command (as root):
$ systemctl start ${_srv}
And to stop it:
$ systemctl stop ${_srv}
Refer to the systemd documentation if more information is required.
==========================================================================
_EOF
else
# Enable the unit in case it wasn't added.
systemctl enable ${_srv} >/dev/null 2>&1 || :
# package is being updated.
if [ -n "$system_booted" ]; then
# reload systemd if running.
systemctl daemon-reload >/dev/null 2>&1 || :
fi
if [ -n "$restart" ]; then
# try restarting package service.
systemctl try-restart ${_srv} >/dev/null 2>&1 || :
else
echo "systemd ${_srv} service must be restarted manually!"
fi
fi
fi
shift; shift
done
;;
*)
exit 1
;;
esac
exit 0