#!/usr/bin/env bash set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" REPO_ROOT="${REPO_ROOT:-$(cd "$SCRIPT_DIR/../../.." && pwd)}" POSTURE_CHECK="${POSTURE_CHECK:-$REPO_ROOT/services/posture-check/posture-check.sh}" FRESHNESS_CHECK="${FRESHNESS_CHECK:-$REPO_ROOT/ops/restore-tests/check-restore-freshness.sh}" PRE_BACKUP_DUMPS="${PRE_BACKUP_DUMPS:-$SCRIPT_DIR/pre-backup-dumps.sh}" NTFY_SCRIPT="${NTFY_SCRIPT:-$REPO_ROOT/ops/restore-tests/send-ntfy.sh}" NTFY_TOPIC="${NTFY_TOPIC:-kallilab-critical}" notify_failure() { local step="$1" local message="$2" if [ -x "$NTFY_SCRIPT" ]; then "$NTFY_SCRIPT" "$NTFY_TOPIC" "Borg pre-hook failed: $step" "$message" high || true fi } run_step() { local step="$1" shift echo "[pre-borg] Running $step" if "$@"; then echo "[pre-borg] OK: $step" else rc=$? notify_failure "$step" "Command failed with exit code $rc: $*" exit "$rc" fi } run_step "posture-check" "$POSTURE_CHECK" run_step "pre-backup-dumps" "$PRE_BACKUP_DUMPS" run_step "restore-freshness" "$FRESHNESS_CHECK" echo "[pre-borg] All pre-flight checks passed"