#!/usr/bin/env bash
# One command on Astra Linux SE: fetch version from EAS Hub, download native bundle, run Astra installer.
#
#   curl -fsSL 'https://asceas.ru/eas-hub/install/install-eas-astra-from-hub.sh' | sudo bash
#   curl -fsSL '…' | sudo EAS_ACCEPT_EULA=1 bash -s -- --accept-eula
#
# Do NOT use the Ubuntu curl (install-eas-from-hub.sh) on Astra — it rewrites apt mirrors.
#
# Env: EAS_HUB, EAS_NATIVE_TAR_URL, EAS_ACCEPT_EULA, EAS_LANG
#
set -euo pipefail

HUB="${EAS_HUB:-https://asceas.ru/eas-hub}"
HUB="${HUB%/}"

if [[ "$(id -u)" -ne 0 ]]; then
  exec sudo env \
    EAS_HUB="${EAS_HUB:-}" \
    EAS_NATIVE_TAR_URL="${EAS_NATIVE_TAR_URL:-}" \
    EAS_ACCEPT_EULA="${EAS_ACCEPT_EULA:-}" \
    EAS_LANG="${EAS_LANG:-}" \
    LANG="${LANG:-}" \
    bash "$0" "$@"
fi

echo "=== EAS install from hub (Astra Linux SE, beta) ==="

_eas_load_accept_script() {
  local tmp
  tmp="$(mktemp)"
  if curl -fsSL "$HUB/install/eas-accept-user-agreement.sh" -o "$tmp" 2>/dev/null; then
    printf '%s' "$tmp"
    return 0
  fi
  rm -f "$tmp"
  return 1
}

EAS_ACCEPT_SCRIPT="$(_eas_load_accept_script || true)"
if [[ -n "$EAS_ACCEPT_SCRIPT" && -f "$EAS_ACCEPT_SCRIPT" ]]; then
  # shellcheck disable=SC1090
  source "$EAS_ACCEPT_SCRIPT"
  for arg in "$@"; do
    if [[ "$arg" == "--accept-eula" || "$arg" == "--accept-user-agreement" ]]; then
      export EAS_ACCEPT_EULA=1
      break
    fi
  done
  eas_require_user_agreement ""
else
  echo "Не удалось загрузить пользовательское соглашение с хаба."
  exit 1
fi

export DEBIAN_FRONTEND=noninteractive
if ! command -v curl >/dev/null 2>&1 || ! command -v python3 >/dev/null 2>&1; then
  apt-get update -qq
  apt-get install -y --no-install-recommends ca-certificates curl python3
fi

if [[ -n "${EAS_NATIVE_TAR_URL:-}" ]]; then
  TAR_URL="${EAS_NATIVE_TAR_URL}"
  echo "Архив (EAS_NATIVE_TAR_URL): $TAR_URL"
else
  MANIFEST_URL="$HUB/manifest.json"
  echo "Манифест: $MANIFEST_URL"
  VER="$(curl -fsSL "$MANIFEST_URL" | python3 -c "import json,sys; print(json.load(sys.stdin).get('latest_version') or '')")"
  VER="$(echo "$VER" | tr -d '\r\n')"
  if [[ -z "$VER" ]]; then
    echo "В манифесте нет latest_version"
    exit 1
  fi
  TAR_URL="$HUB/releases/current/eas-native-${VER}.tar.gz"
  echo "Версия хаба: $VER"
  echo "Архив: $TAR_URL"
fi

if ! curl -fsSL -I -o /dev/null "$TAR_URL"; then
  echo "Не удалось скачать: $TAR_URL"
  exit 1
fi

BOOT_URL="$HUB/install/install-eas-astra-from-url.sh"
TMP="$(mktemp)"
trap 'rm -f "$TMP"' EXIT

echo "Загрузка установщика: $BOOT_URL"
curl -fsSL "$BOOT_URL" -o "$TMP"
chmod +x "$TMP"

echo "Запуск установки на Astra…"
exec env EAS_LANG="${EAS_LANG:-}" bash "$TMP" --url "$TAR_URL" "$@"
