#!/bin/sh -e

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

dbx="s6-rc-db -c /usr/lib/s6-rc/compiled-work"

if $dbx list services | grep -qFx "$1" ; then
  policy=$(readlink /usr/lib/s6-rc/policy/current)
  if test x"$policy" = x"exclusive" ; then
    top="top"
  elif test x"$policy" = x"shared" ; then
    top="runlevel_2"
  else
    echo "svctl-isenabled: fatal: /usr/lib/s6-rc/policy/current should be a relative symlink to either shared or exclusive" 1>&2
    exit 100
  fi
  if $dbx contents "$top" | grep -qFx "$1"; then
    echo "service $1 is enabled"
    exit 0
  else
    echo "service $1 is disabled"
    exit 1
  fi
elif $dbx list bundles | grep -qFx "$1" ; then
  $dbx contents "$1" | while read -r service; do
    # We do not want to check nested bundles, only directly linked services
    if ! $dbx contents "$top" | grep -qFx "$service"; then
      echo "service $service in bundle $1 is disabled"
      # We do not differentiate between all disabled or some disabled
      exit 1
    fi
  done
  echo "bundle $1 is enabled"
  exit 0
else
  echo "svctl-isenabled: unknown atomic service: $1" 1>&2
  exit 3
fi
