From 6fbbb0c7b580ee041fe035d5f9d5ce1497366f32 Mon Sep 17 00:00:00 2001 From: Philipp Heckel Date: Sat, 4 Dec 2021 15:32:21 -0500 Subject: [PATCH] Properly handle systemd start/stop during Debian package install, closes #30 --- .goreleaser.yml | 2 ++ scripts/postinst.sh | 19 +++++++++++++++++++ scripts/postrm.sh | 8 +++++--- scripts/prerm.sh | 12 ++++++++++++ 4 files changed, 38 insertions(+), 3 deletions(-) create mode 100755 scripts/postinst.sh create mode 100755 scripts/prerm.sh diff --git a/.goreleaser.yml b/.goreleaser.yml index 8a98d0af..ae217ee5 100644 --- a/.goreleaser.yml +++ b/.goreleaser.yml @@ -53,6 +53,8 @@ nfpms: - src: config/ntfy.service dst: /lib/systemd/system/ntfy.service scripts: + postinstall: "scripts/postinst.sh" + preremove: "scripts/prerm.sh" postremove: "scripts/postrm.sh" archives: - diff --git a/scripts/postinst.sh b/scripts/postinst.sh new file mode 100755 index 00000000..0a09edbf --- /dev/null +++ b/scripts/postinst.sh @@ -0,0 +1,19 @@ +#!/bin/sh +set -e + +# Restart systemd service if it was already running. Note that "deb-systemd-invoke try-restart" will +# only act if the service is already running. If it's not running, it's a no-op. +# +# TODO: This is only tested on Debian. +# +if [ "$1" = "configure" ] && [ -d /run/systemd/system ]; then + systemctl --system daemon-reload >/dev/null || true + if systemctl is-active -q ntfy.service; then + echo "Restarting ntfy.service ..." + if [ -x /usr/bin/deb-systemd-invoke ]; then + deb-systemd-invoke try-restart ntfy.service >/dev/null || true + else + systemctl restart ntfy.service >/dev/null || true + fi + fi +fi diff --git a/scripts/postrm.sh b/scripts/postrm.sh index 4588bc27..1eac8a71 100755 --- a/scripts/postrm.sh +++ b/scripts/postrm.sh @@ -1,6 +1,8 @@ #!/bin/sh -set -eu -systemctl stop ntfy >/dev/null 2>&1 || true +set -e + +# Delete the config if package is purged if [ "$1" = "purge" ]; then - rm -rf /etc/ntfy + echo "Deleting /etc/ntfy ..." + rm -rf /etc/ntfy || true fi diff --git a/scripts/prerm.sh b/scripts/prerm.sh new file mode 100755 index 00000000..f3668550 --- /dev/null +++ b/scripts/prerm.sh @@ -0,0 +1,12 @@ +#!/bin/sh +set -e + +# Stop systemd service +if [ -d /run/systemd/system ] && [ "$1" = remove ]; then + echo "Stopping ntfy.service ..." + if [ -x /usr/bin/deb-systemd-invoke ]; then + deb-systemd-invoke stop 'ntfy.service' >/dev/null || true + else + systemctl stop ntfy >/dev/null 2>&1 || true + fi +fi