#!/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 "错误: 不支持的操作系统: $OS" >&2
    exit 1
    ;;
esac

# 架构映射
case "$ARCH" in
  x86_64)
    CPU="x64"
    ;;
  arm64|aarch64)
    CPU="arm64"
    ;;
  *)
    echo "警告: 未识别的架构 $ARCH，使用 x64" >&2
    CPU="x64"
    ;;
esac

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

# 检查二进制文件是否存在
if [ ! -f "$BINARY_PATH" ]; then
  echo "错误: 未找到二进制文件: $BINARY_PATH" >&2
  echo "" >&2
  echo "请尝试以下解决方案:" >&2
  echo "1. 运行 'npm run build' 构建当前平台二进制文件" >&2
  echo "2. 运行 'npm run build:all' 构建所有平台二进制文件" >&2
  echo "3. 或者从 GitHub Releases 下载预编译的二进制文件" >&2
  echo "" >&2
  echo "如果问题仍然存在，请确保:" >&2
  echo "- 已安装 Rust 工具链" >&2
  echo "- 平台目录结构正确: platforms/$PLATFORM_DIR/" >&2
  exit 1
fi

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