#!/usr/bin/execlineb -S1
# ==============================================================================
# Take down the S6 supervision tree when Home Assistant fails
# ==============================================================================
define HA_RESTART_EXIT_CODE 100
define SIGNAL_EXIT_CODE 256
define SIGTERM 15

foreground { s6-echo "[finish] process exit code ${1}" }

if { s6-test ${1} -ne ${HA_RESTART_EXIT_CODE} }
ifelse { s6-test ${1} -eq ${SIGNAL_EXIT_CODE} } {
  # Process terminated by a signal
  define signal ${2}
  foreground { s6-echo "[finish] process received signal ${signal}" }
  backtick -n new_exit_code { s6-expr 128 + ${signal} }
  importas -ui new_exit_code new_exit_code
  foreground { redirfd -w 1 /var/run/s6/env-stage3/S6_STAGE2_EXITED s6-echo -n -- ${new_exit_code} }
  if { s6-test ${signal} -ne ${SIGTERM} }
  s6-svscanctl -t /var/run/s6/services
}

foreground { redirfd -w 1 /var/run/s6/env-stage3/S6_STAGE2_EXITED s6-echo -n -- ${1} }
s6-svscanctl -t /var/run/s6/services
