#!/usr/bin/env sh
set -eu

# Public base URL containing platform-agent-linux-amd64.tar.gz and
# platform-agent-linux-arm64.tar.gz. Keep this bootstrap free of secrets.
RELEASE_BASE_URL="${PLATFORM_AGENT_RELEASE_BASE_URL:-https://pub-ca72c40797144462bdb7d200c215d361.r2.dev/studio-files/public/platform-agent}"

case "$(uname -m 2>/dev/null || true)" in
  x86_64|amd64) ARCH="amd64" ;;
  aarch64|arm64) ARCH="arm64" ;;
  *)
    printf 'Unsupported CPU architecture: %s\n' "$(uname -m 2>/dev/null || printf unknown)" >&2
    exit 1
    ;;
esac

if command -v curl >/dev/null 2>&1; then
  download() { curl -fsSL "$1" -o "$2"; }
elif command -v wget >/dev/null 2>&1; then
  download() { wget -qO "$2" "$1"; }
else
  printf '%s\n' 'curl or wget is required to install Platform Agent.' >&2
  exit 1
fi

TMP_DIR="$(mktemp -d)"
cleanup() { rm -rf "$TMP_DIR"; }
trap cleanup EXIT INT TERM

ARCHIVE_URL="${RELEASE_BASE_URL%/}/platform-agent-linux-${ARCH}.tar.gz"
ARCHIVE_PATH="$TMP_DIR/platform-agent.tar.gz"

printf 'Downloading Platform Agent for linux-%s...\n' "$ARCH"
download "$ARCHIVE_URL" "$ARCHIVE_PATH"
tar -xzf "$ARCHIVE_PATH" -C "$TMP_DIR"

PACKAGE_DIR="$TMP_DIR/platform-agent"
if [ ! -x "$PACKAGE_DIR/scripts/install.sh" ]; then
  PACKAGE_DIR="$(find "$TMP_DIR" -type f -path '*/scripts/install.sh' -print -quit | sed 's#/scripts/install.sh##')"
fi

if [ -z "${PACKAGE_DIR:-}" ] || [ ! -x "$PACKAGE_DIR/scripts/install.sh" ]; then
  printf '%s\n' 'Downloaded archive does not contain scripts/install.sh.' >&2
  exit 1
fi

exec "$PACKAGE_DIR/scripts/install.sh"
