#!/usr/bin/env bashio
# ==============================================================================
# Take down the S6 supervision tree when Home Assistant fails
# ==============================================================================
declare RESTART_EXIT_CODE 100
declare SIGNAL_EXIT_CODE 256
declare SIGTERM 15
declare APP_EXIT_CODE=${1}
declare SYS_EXIT_CODE=${2+x}
declare NEW_EXIT_CODE=

bashio::log.info "Home Assistant Core finish process exit code ${1}"

if [[ ${APP_EXIT_CODE} -eq ${RESTART_EXIT_CODE} ]]; then
  exit 0
elif [[ ${APP_EXIT_CODE} -eq ${SIGNAL_EXIT_CODE} ]]; then
  bashio::log.info "Home Assistant Core finish process received signal ${APP_EXIT_CODE}"

  NEW_EXIT_CODE=$((128 + SYS_EXIT_CODE))
  echo ${NEW_EXIT_CODE} > /run/s6-linux-init-container-results/exitcode

  if [[ ${NEW_EXIT_CODE} -eq ${SIGTERM} ]]; then
    /run/s6/basedir/bin/halt
  fi
else
  bashio::log.info "Home Assistant Core service shutdown"

  echo ${APP_EXIT_CODE} > /run/s6-linux-init-container-results/exitcode
  /run/s6/basedir/bin/halt
fi
