#!/usr/bin/env bash
# iolite installer (api) — generated 2026-05-04T07:26:28.6251727+00:00, version 1.0.9
set -euo pipefail

IOLITE_VERSION="1.0.9"
IOLITE_COMPONENT="api"
IOLITE_API_URL=""
IOLITE_INSTALL_ICS="false"
IOLITE_BASE_URL="https://install.iolitesecure.io"
# SHA256 of the chosen component's tarball, per architecture
IOLITE_SHA256_LINUX_X64="13a73e24b1f3f4dd9c76441243d8aafc5f27b4d8eec60f9822663bcc5a34e48f"
IOLITE_SHA256_LINUX_ARM64="767ff0a3bdb6f12d65da4b5cc7242b4109c5ed8d709d8e75dbcb98fad869d5b6"

[ "$(id -u)" -eq 0 ] || { echo "ERROR: must run as root (try: curl ... | sudo bash)"; exit 1; }
for cmd in curl tar sha256sum uname; do
    command -v "$cmd" >/dev/null || { echo "ERROR: required command not found: $cmd"; exit 1; }
done

case "$(uname -m)" in
    x86_64|amd64)  ARCH="linux-x64";  EXPECTED_SHA="$IOLITE_SHA256_LINUX_X64" ;;
    aarch64|arm64) ARCH="linux-arm64"; EXPECTED_SHA="$IOLITE_SHA256_LINUX_ARM64" ;;
    *) echo "ERROR: unsupported architecture: $(uname -m)"; exit 1 ;;
esac

case "$IOLITE_COMPONENT" in
    api)       TARBALL_NAME="iolite-api-${IOLITE_VERSION}-${ARCH}.tar.gz" ;;
    collector) TARBALL_NAME="iolite-translator-${IOLITE_VERSION}-${ARCH}.tar.gz" ;;
    full)      TARBALL_NAME="iolite-${IOLITE_VERSION}-${ARCH}.tar.gz" ;;
    *) echo "ERROR: unknown component: $IOLITE_COMPONENT"; exit 1 ;;
esac

WORK="$(mktemp -d)"
trap 'rm -rf "$WORK"' EXIT
URL="${IOLITE_BASE_URL}/release/${IOLITE_VERSION}/${TARBALL_NAME}"

echo "Downloading ${TARBALL_NAME} from ${URL}..."
curl -fSL --retry 3 --retry-delay 2 -o "$WORK/iolite.tar.gz" "$URL"

echo "$EXPECTED_SHA  $WORK/iolite.tar.gz" | sha256sum -c - >/dev/null \
    || { echo "ERROR: SHA256 mismatch — refusing to install"; exit 1; }

mkdir -p "$WORK/iolite"
tar -xzf "$WORK/iolite.tar.gz" -C "$WORK/iolite"

# packaging/install.sh in the iolite repo uses different component names than the
# customer-facing URL. Map: collector → translator, full → all.
case "$IOLITE_COMPONENT" in
    collector) IOLITE_COMPONENT="translator" ;;
    full)      IOLITE_COMPONENT="all" ;;
esac
export IOLITE_COMPONENT IOLITE_API_URL IOLITE_INSTALL_ICS

chmod +x "$WORK/iolite/scripts/install.sh"
bash "$WORK/iolite/scripts/install.sh"
