46 lines
1.7 KiB
Plaintext
46 lines
1.7 KiB
Plaintext
#!/command/with-contenv bashio
|
|
# shellcheck shell=bash
|
|
# ==============================================================================
|
|
# Home Assistant Community Add-on: Example
|
|
# ==============================================================================
|
|
declare exit_code
|
|
readonly exit_code_container=$(</run/s6-linux-init-container-results/exitcode)
|
|
readonly exit_code_service="${1}"
|
|
readonly exit_code_signal="${2}"
|
|
readonly service="fqmbotnfix5"
|
|
|
|
bashio::log.info \
|
|
"Service ${service} exited with code ${exit_code_service}" \
|
|
"(by signal ${exit_code_signal})"
|
|
|
|
# Received a signal
|
|
if [[ "${exit_code_service}" -eq 256 ]]; then
|
|
|
|
# The signal might be a result of another service crashing. Only
|
|
# overwrite the container exit code if it is not already set.
|
|
if [[ "${exit_code_container}" -eq 0 ]]; then
|
|
echo $((128 + $exit_code_signal)) > /run/s6-linux-init-container-results/exitcode
|
|
fi
|
|
|
|
# If the signal is SIGTERM, we should halt the container and take down
|
|
# the whole process tree.
|
|
[[ "${exit_code_signal}" -eq 15 ]] && exec /run/s6/basedir/bin/halt
|
|
|
|
# The service exited with a non-zero exit code, which means it crashed.
|
|
elif [[ "${exit_code_service}" -ne 0 ]]; then
|
|
|
|
# The service might be a result of another service crashing. Only
|
|
# overwrite the container exit code if it is not already set.
|
|
if [[ "${exit_code_container}" -eq 0 ]]; then
|
|
echo "${exit_code_service}" > /run/s6-linux-init-container-results/exitcode
|
|
fi
|
|
|
|
# We should halt the container and take down the whole process tree.
|
|
exec /run/s6/basedir/bin/halt
|
|
|
|
# The service exited with a zero exit code, which means it exited, let
|
|
# S6 supervision restart it.
|
|
else
|
|
bashio::log.info "Service ${service} restarting..."
|
|
fi
|