#!/bin/sh -e

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

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

if s6-rc-db list services | grep -qFx "$1" ; then
  if s6-rc -a list | grep -qFx "$1"; then
    echo "service $1 is running"
    exit 0
  else
    echo "service $1 is stopped"
    exit 3
  fi
elif s6-rc-db list bundles | grep -qFx "$1" ; then
  s6-rc-db contents "$1" | while read -r service; do
    # We do not want to check nested bundles, only directly linked services
    if ! s6-rc -a list | grep -qFx "$service"; then
      echo "service $service in bundle $1 is stopped"
      # We do not differentiate between all down or some down
      exit 3
    fi
  done
  echo "bundle $1 is running"
  exit 0
else
  echo "svctl-isup: unknown atomic service: $1" 1>&2
  exit 4
fi
