#!/usr/bin/env bash
set -euo pipefail

# ----------------------------------------
# Resolve script directory
# ----------------------------------------
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"

UNAME_S="$(uname -s)"
UNAME_M="$(uname -m)"

# Normalize ARCH
case "$UNAME_M" in
  x86_64|amd64) ARCH="x86_64" ;;
  arm64|aarch64) ARCH="arm64" ;;
  *) ARCH="$UNAME_M" ;;
esac

# ----------------------------------------
# macOS / Linux
# ----------------------------------------
case "$UNAME_S" in
  Darwin)
    PLATFORM_DIR="mac"
    case "$ARCH" in
      x86_64) ARCH_DIR="x64" ;;
      arm64)  ARCH_DIR="arm64" ;;
      *)      ARCH_DIR="$ARCH" ;;
    esac
    BINARY="$SCRIPT_DIR/$PLATFORM_DIR/$ARCH_DIR/makensis"
    ;;
  Linux)
    PLATFORM_DIR="linux"
    BINARY="$SCRIPT_DIR/$PLATFORM_DIR/makensis"
    ;;
  *)
    echo "❌ Unsupported platform: $UNAME_S" >&2
    exit 1
    ;;
esac

# ----------------------------------------
# Validate + execute
# ----------------------------------------
if [ ! -f "$BINARY" ]; then
  echo "❌ makensis binary not found: $BINARY" >&2
  exit 1
fi

if [ ! -x "$BINARY" ]; then
  chmod +x "$BINARY"
fi

export NSISDIR="$SCRIPT_DIR/windows"

exec "$BINARY" "$@"

