#!/bin/sh -e

. /usr/lib/s6-policy-common/lib/svctl-common.sh

# Der WUNSCHzustand, als eigenes Wort.
#
# Bis 1.0.9 war das die Antwort von "svctl isup" -- und weil es "isup" hiess,
# las es jeder als Ist-Zustand. Auf dns-1 sagte es "service pdns is running",
# waehrend kein pdns_server-Prozess existierte. Die Trennung steht jetzt im
# Namen: "isup" fragt den Supervisor, "iswanted" fragt s6-rc.
#
# Wofuer man das braucht: um zu unterscheiden, ob ein Dienst nicht laeuft, WEIL
# ihn niemand haben will, oder obwohl er laufen soll. Das sind zwei Lagen mit
# zwei Ursachen, und ein Werkzeug, das sie zusammenwirft, schickt den Leser in
# die falsche Richtung.

if test -z "$1" ; then
  echo "svctl-iswanted: usage: svctl-iswanted service" 1>&2
  exit 100
fi

if ! test -L /run/s6-rc/compiled ; then
  echo "svctl-iswanted: fatal: s6-rc is not running" 1>&2
  exit 2
fi

if ! svctl_load_active; then
  svctl_report_unmeasurable
  exit 5
fi

if s6-rc-db list services | grep -qFx "$1" || s6-rc-db list bundles | grep -qFx "$1" ; then
  if svctl_is_active "$1"; then
    echo "service $1 is wanted up (s6-rc considers it active)"
    exit 0
  fi
  echo "service $1 is not wanted up"
  exit 3
fi

echo "svctl-iswanted: unknown atomic service: $1" 1>&2
exit 4
