#!/usr/bin/env bash
# Sofik AI installer — https://get.sofik.ai
set -euo pipefail

APP_NAME="Sofik AI"
ARTIFACT_BASENAME="Sofik"
INSTALL_DIR="${SOFIK_INSTALL_DIR:-/Applications}"
DL_BASE="${SOFIK_DL_BASE:-https://dl.sofik.ai}"
CHANNEL="${SOFIK_CHANNEL:-latest}"

err()  { printf "\033[31merror:\033[0m %s\n" "$*" >&2; exit 1; }
info() { printf "\033[36m::\033[0m %s\n" "$*"; }
ok()   { printf "\033[32m✓\033[0m %s\n" "$*"; }

[ "$(uname -s)" = "Darwin" ] || err "Sofik só suporta macOS por enquanto."

ARCH="$(uname -m)"
case "$ARCH" in
  arm64)  TARGET="aarch64-apple-darwin" ;;
  x86_64) TARGET="x86_64-apple-darwin" ;;
  *) err "Arquitetura não suportada: $ARCH" ;;
esac

URL="${DL_BASE}/${CHANNEL}/${ARTIFACT_BASENAME}-${TARGET}.app.tar.gz"
SHA_URL="${URL}.sha256"

TMP="$(mktemp -d -t sofik.XXXXXX)"
trap 'rm -rf "$TMP"' EXIT

info "Baixando ${APP_NAME} (${TARGET})…"
curl -fSL  --progress-bar "$URL"     -o "${TMP}/app.tar.gz"        || err "Falha ao baixar $URL"
curl -fsSL                "$SHA_URL" -o "${TMP}/app.tar.gz.sha256" || err "Falha ao baixar $SHA_URL"

info "Verificando assinatura…"
EXPECTED="$(awk '{print $1}' "${TMP}/app.tar.gz.sha256")"
ACTUAL="$(shasum -a 256 "${TMP}/app.tar.gz" | awk '{print $1}')"
[ "$EXPECTED" = "$ACTUAL" ] || err "Checksum inválido (esperado $EXPECTED, recebido $ACTUAL)"
ok "Checksum confere"

info "Extraindo…"
tar -xzf "${TMP}/app.tar.gz" -C "$TMP"
APP_PATH="$(find "$TMP" -maxdepth 3 -name '*.app' -type d | head -n1)"
[ -n "$APP_PATH" ] || err "Bundle .app não encontrado dentro do tarball."

DEST="${INSTALL_DIR}/${APP_NAME}.app"
if [ -e "$DEST" ]; then
  info "Removendo instalação anterior em $DEST…"
  rm -rf "$DEST" 2>/dev/null || sudo rm -rf "$DEST"
fi

info "Instalando em $DEST…"
if ! mv "$APP_PATH" "$DEST" 2>/dev/null; then
  info "Permissão necessária pra escrever em $INSTALL_DIR — pode pedir senha."
  sudo mv "$APP_PATH" "$DEST"
fi

# Remove a quarentena pra Gatekeeper não bloquear (binário ainda não notarizado).
xattr -dr com.apple.quarantine "$DEST" 2>/dev/null || true

ok "${APP_NAME} instalado em $DEST"
echo
echo "Pra abrir:"
echo "  open -a \"${APP_NAME}\""
