#!/bin/bash

help() {
  >&2 echo '
s6 compatibility script of:

/usr/bin/deb-systemd-helper is a program which should be called by dpkg maintscripts only. Please do not run it interactively, ever.
'
}

# discard all option parameters
while [[ $1 =~ ^- ]]; do
  if [ "$1" = '--help' ] || [ "$1" = '-h' ]; then
    help
    exit 0
  fi
  shift
done

# need at least 2 non-option arguments (service name and action)
if [ $# -lt 2 ]; then
  help
  exit 1
fi

# update databases, so we can check if service name exists
svctl compile && svctl update

# only manage service if it's known to s6
svc=${2%.service}
if svctl listall | grep -q "^$svc$"; then
  case "$1" in
    disable|purge)
      svctl disable "$svc" || exit 1
      ;;
    enable)
      # 0.1.11: KEIN svctl enable mehr. "Pakete ja, Dienste aus, Puppet schaltet
      # ein": dh_installinit/dh_installsystemd rufen das bei JEDEM Upgrade auf,
      # und bis 0.1.10 schaltete es damit auch einen bewusst ausgeschalteten
      # Dienst wieder ein (Debian tut das nicht: defaults ist ein No-op, wenn
      # Links existieren, und deb-systemd-helper achtet auf was-enabled).
      # Gemessen am 23.09.2026 auf infra-1.tick1: das Upgrade retain
      # 0.16.6->0.16.7 schaltete retain ein, und das folgende invoke-rc.d
      # restart startete es samt lxe. Das Einschalten bei der ERSTinstallation
      # macht dh-s6 selbst (Marker, .noenable) -- dieser Weg wird nicht gebraucht.
      # Inventar vor dem Bau: jeder Dienst, der laufen soll und hier bisher
      # eingeschaltet wurde, hat einen Puppet-Eintrag mit enable => true.
      >&2 echo "deb-systemd-helper: ${svc}: enable schaltet unter s6 nicht ein (Richtlinie). Einschalten: svctl enable ${svc} -- Puppet tut das."
      ;;
  esac
else
  echo "Service ${svc} is unknown to s6."
fi

# make changes persistent
svctl compile && svctl update

exit 0
