#!/usr/bin/env bash
set -euo pipefail
request=/var/lib/brz-healthos/update-version
result=/var/lib/brz-healthos/update-result
version="$(tr -d '[:space:]' < "$request")"
if [[ ! "$version" =~ ^0\.8\.[0-9]+$ ]]; then
  printf 'Invalid HealthOS version request.\n' > "$result"
  exit 2
fi
work="$(mktemp -d)"
trap 'rm -rf "$work"' EXIT
/usr/sbin/brz-healthos-recovery prepare-update
curl -fsSL 'https://brz-healthos-packages.pages.dev/install-healthos.sh' -o "$work/install-healthos.sh"
sed -i "/^\. \/etc\/os-release$/a HEALTHOS_VERSION=\"$version\"" "$work/install-healthos.sh"
if bash "$work/install-healthos.sh" >"$result" 2>&1; then
  if ! /usr/sbin/brz-healthos-recovery check >>"$result" 2>&1; then
    printf '\nPost-update health check failed; starting automatic rollback.\n' >> "$result"
    /usr/sbin/brz-healthos-recovery rollback >>"$result" 2>&1
    exit 1
  fi
  printf '\nBRZ HealthOS %s installed successfully.\n' "$version" >> "$result"
else
  rc=$?
  printf '\nBRZ HealthOS %s installation failed with exit code %s.\n' "$version" "$rc" >> "$result"
  exit "$rc"
fi
