#!/bin/bash

# fnva - 跨平台环境切换工具
# 根据当前平台和架构选择对应的二进制文件并执行

# 获取脚本所在目录
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"

# 检测平台和架构
OS=$(uname -s | tr '[:upper:]' '[:lower:]')
ARCH=$(uname -m)

# 平台映射
case "$OS" in
  darwin)
    PLATFORM="darwin"
    ;;
  linux)
    PLATFORM="linux"
    ;;
  *)
    echo "Error: Unsupported OS: $OS" >&2
    exit 1
    ;;
esac

# 架构映射
case "$ARCH" in
  x86_64)
    CPU="x64"
    ;;
  arm64|aarch64)
    CPU="arm64"
    ;;
  *)
    echo "Warning: Unrecognized architecture $ARCH, falling back to x64" >&2
    CPU="x64"
    ;;
esac

# 构建二进制文件路径
PLATFORM_DIR="$PLATFORM-$CPU"
BINARY_PATH="$PROJECT_ROOT/platforms/$PLATFORM_DIR/fnva"

# 检查二进制文件是否存在
if [ ! -f "$BINARY_PATH" ]; then
  echo "Error: Binary file not found: $BINARY_PATH" >&2
  echo "" >&2
  echo "Please try the following solutions:" >&2
  echo "1. Run 'npm run build' to build the binary for the current platform" >&2
  echo "2. Run 'npm run build:all' to build binaries for all platforms" >&2
  echo "3. Or download pre-compiled binaries from GitHub Releases" >&2
  echo "" >&2
  echo "If the problem persists, please ensure:" >&2
  echo "- Rust toolchain is installed" >&2
  echo "- Platform directory structure is correct: platforms/$PLATFORM_DIR/" >&2
  exit 1
fi

# 执行二进制文件，传递所有参数
exec "$BINARY_PATH" "$@"