#!/usr/bin/env bash UMBREL_ROOT="$(readlink -f $(dirname "${BASH_SOURCE[0]}")/../..)" STATUS_FILE_PATH="/umbrel-status" set_status="/status-server/set-status" check_root () { if [[ $UID != 0 ]]; then echo "This script must be run as root" exit 1 fi } check_umbrel_os () { [[ -f "/etc/default/umbrel" ]] && source "/etc/default/umbrel" if [[ -z "${UMBREL_OS:-}" ]]; then echo "This script must only be run on Umbrel OS" exit 1 fi } has_service_failed () { systemctl is-failed --quiet '*' } has_umbrel_started () { cat "${STATUS_FILE_PATH}" | grep --silent '^umbrel:completed$' } has_error_been_caught () { cat "${STATUS_FILE_PATH}" | grep --silent ':errored:' } check_root check_umbrel_os $set_status service-monitor started echo "Starting service monitor..." while true do if has_umbrel_started then echo "Umbrel successfully started, exiting service monitor!" exit 0 fi if has_service_failed then echo "Service failed!" if has_error_been_caught then echo "Error already caught, doing nothing." else echo "Error not caught, writing an error." $set_status service-monitor errored service-failed fi echo "Exiting service monitor" exit 0 fi sleep 1 done