Przeglądaj źródła

Properly handle systemd start/stop during Debian package install, closes #30

Philipp Heckel 4 lat temu
rodzic
commit
6fbbb0c7b5
4 zmienionych plików z 38 dodań i 3 usunięć
  1. 2 0
      .goreleaser.yml
  2. 19 0
      scripts/postinst.sh
  3. 5 3
      scripts/postrm.sh
  4. 12 0
      scripts/prerm.sh

+ 2 - 0
.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:
   -

+ 19 - 0
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

+ 5 - 3
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

+ 12 - 0
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