#!/bin/bash
# 博书·中外名著 · Mac 一键安装脚本
# 用法：curl -L https://book.wiki/app/install-mac.sh | bash
# 效果：自动下载 .app.zip → 解压到 /Applications → 启动
# 兼容性：macOS 10.15+（Intel / Apple Silicon 均支持）
# 安全说明：脚本会校验 SHA-256；app 未签名（首次启动需右键→打开）

set -e

APP_NAME="博书·中外名著"
BUNDLE_ID="wiki.book.app"
INSTALL_DIR="/Applications"
APP_DIR="${INSTALL_DIR}/${APP_NAME}.app"
ZIP_NAME="bookwiki-reader-mac-v0.1.0.zip"
DOWNLOAD_URL="https://book.wiki/app/mac/${ZIP_NAME}"
EXPECTED_SHA256="__SHA256_PLACEHOLDER__"   # 部署时替换
TMP_DIR="$(mktemp -d -t bookwiki-mac)"

cleanup() { rm -rf "$TMP_DIR"; }
trap cleanup EXIT

# 1. 系统检查
echo "🔍 检查系统…"
if [[ "$(uname)" != "Darwin" ]]; then
  echo "❌ 此脚本仅支持 macOS（检测到 $(uname)）"
  exit 1
fi
MACOS_VER=$(sw_vers -productVersion 2>/dev/null || echo "0")
MACOS_MAJOR=$(echo "$MACOS_VER" | cut -d. -f1)
if (( MACOS_MAJOR < 10 )); then
  echo "❌ 需要 macOS 10.15+（当前 $MACOS_VER）"
  exit 1
fi
ARCH=$(uname -m)
echo "✅ macOS $MACOS_VER · $ARCH"

# 2. 下载
echo "📥 下载 $APP_NAME (${ZIP_NAME})…"
ZIP_PATH="${TMP_DIR}/${ZIP_NAME}"
if ! curl -fL --retry 3 -o "$ZIP_PATH" "$DOWNLOAD_URL"; then
  echo "❌ 下载失败：$DOWNLOAD_URL"
  exit 1
fi
echo "   大小: $(du -h "$ZIP_PATH" | awk '{print $1}')"

# 3. SHA-256 校验（生产环境部署时改 __SHA256_PLACEHOLDER__ 为实际值）
if [[ "$EXPECTED_SHA256" != "__SHA256_PLACEHOLDER__" ]]; then
  echo "🔐 校验 SHA-256…"
  ACTUAL_SHA256=$(shasum -a 256 "$ZIP_PATH" | awk '{print $1}' | xargs)
  if [[ "$ACTUAL_SHA256" != "$EXPECTED_SHA256" ]]; then
    echo "❌ SHA-256 不匹配！"
    echo "   期望: $EXPECTED_SHA256"
    echo "   实际: $ACTUAL_SHA256"
    exit 2
  fi
  echo "✅ SHA-256 校验通过"
fi

# 3. 关闭已运行实例
if pgrep -f "$BUNDLE_ID" >/dev/null 2>&1; then
  echo "🛑 关闭已运行的 $APP_NAME…"
  osascript -e "tell application id \"$BUNDLE_ID\" to quit" 2>/dev/null || true
  sleep 1
fi

# 4. 卸载旧版（如有）
if [[ -d "$APP_DIR" ]]; then
  echo "🗑  卸载旧版…"
  rm -rf "$APP_DIR"
fi

# 5. 解压到 /Applications
echo "📦 解压到 $INSTALL_DIR…"
# ditto 保留 macOS 元数据（quarantine / extended attributes）; 备选 unzip
ditto -x -k "$ZIP_PATH" "$INSTALL_DIR/" || {
  echo "⚠️  ditto 失败，回退到 unzip"
  unzip -q -o "$ZIP_PATH" -d "$INSTALL_DIR/"
}

if [[ ! -d "$APP_DIR" ]]; then
  echo "❌ 解压后未找到 $APP_DIR"
  echo "   解压内容预览："
  unzip -l "$ZIP_PATH" 2>/dev/null | head -10
  exit 3
fi

# 6. 删除 quarantine（避免 Gatekeeper 拦截）
echo "🛡  清除 quarantine 标记…"
xattr -dr com.apple.quarantine "$APP_DIR" 2>/dev/null || true

# 7. 启动
echo "🚀 启动 $APP_NAME…"
open "$APP_DIR"

cat <<EOF

✅ 安装完成！

📌 $APP_NAME 已安装到：$APP_DIR
📌 首次启动后，建议到「系统设置 → 隐私与安全性」点击「仍要打开」以信任此 App
📌 后续更新：再次运行本脚本即可（会自动卸载旧版）
📌 卸载：rm -rf "$APP_DIR"

EOF
