name: Build macOS X86 Application

on:
  # 允许手动触发工作流
  workflow_dispatch:
  # 当在 GitHub 上创建新的 release 时自动触发
  release:
    types: [created]

jobs:
  build-macos:
    # 步骤 1: 指定运行环境为 macOS 14 (Intel)
    # 使用 xlarge runner 确保是 Intel 架构
    runs-on: macos-13

    steps:
      # 步骤 2: 检出你的代码库
      - name: Checkout repository
        uses: actions/checkout@v4

      # 步骤 3: 设置 Python 环境
      - name: Set up Python
        uses: actions/setup-python@v5
        with:
          python-version: '3.12'

      # 步骤 4: 安装 uv (一个快速的 Python 包安装器)
      - name: Install uv
        run: |
          curl -LsSf https://astral.sh/uv/install.sh | sh
          echo "$HOME/.cargo/bin" >> $GITHUB_PATH

      # 步骤 5: 使用 uv 安装项目依赖
      - name: Install dependencies with uv
        run: |
          rm -f uv.lock
          uv sync --no-dev

      # 步骤 6: 安装 UPX (用于压缩可执行文件)
      - name: Install UPX
        run: |
          brew install upx

      # 步骤 7: 运行 PyInstaller 构建 x86_64 应用
      - name: Build the x86_64 application with PyInstaller
        run: |
          uv pip install pyinstaller
          uv run --no-dev pyinstaller lite_mac_x86_64.spec --noconfirm --clean -y

      # 步骤 8: 从代码中获取应用版本号
      - name: Get application version
        id: get_version
        run: |
          VERSION=$(python -c "import docutranslate; print(docutranslate.__version__)")
          echo "VERSION=$VERSION" >> $GITHUB_ENV
          echo "version=$VERSION" >> $GITHUB_OUTPUT

      # 步骤 9: 创建标准的 macOS .app 包结构
      - name: Create macOS app bundle structure
        run: |
          # 创建必要的目录
          mkdir -p dist/DocuTranslate.app/Contents/MacOS
          mkdir -p dist/DocuTranslate.app/Contents/Resources
          
          # 移动可执行文件到 .app 包中
          mv dist/DocuTranslate-*-mac dist/DocuTranslate.app/Contents/MacOS/DocuTranslate
          chmod +x dist/DocuTranslate.app/Contents/MacOS/DocuTranslate
          
          # 复制应用图标
          cp DocuTranslate.icns dist/DocuTranslate.app/Contents/Resources/
          
          # 动态创建 Info.plist 文件，明确指定 x86_64 架构
          cat > dist/DocuTranslate.app/Contents/Info.plist << EOF
          <?xml version="1.0" encoding="UTF-8"?>
          <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
          <plist version="1.0">
          <dict>
              <key>CFBundleExecutable</key>
              <string>DocuTranslate</string>
              <key>CFBundleIconFile</key>
              <string>DocuTranslate.icns</string>
              <key>CFBundleIdentifier</key>
              <string>com.yourcompany.DocuTranslate</string>
              <key>CFBundleName</key>
              <string>DocuTranslate</string>
              <key>CFBundleVersion</key>
              <string>${{ github.run_number }}</string>
              <key>CFBundleShortVersionString</key>
              <string>${{ env.VERSION }}</string>
              <key>LSArchitecturePriority</key>
              <array>
                  <string>x86_64</string>
              </array>
              <key>NSHighResolutionCapable</key>
              <true/>
          </dict>
          </plist>
          EOF
        shell: bash

      # 步骤 10: 将 .app 文件打包成 .dmg 磁盘映像
      - name: Create DMG Disk Image with version
        run: |
          hdiutil create -volname "DocuTranslate Installer" -srcfolder dist/DocuTranslate.app -ov -format UDZO "dist/DocuTranslate-${{ env.VERSION }}-macOS-x86_64.dmg"

      # 步骤 11: 上传 .dmg 文件作为构建产物
      - name: Upload macOS DMG
        uses: actions/upload-artifact@v4
        with:
          name: DocuTranslate-macOS-x86_64
          path: dist/DocuTranslate-${{ env.VERSION }}-macOS-x86_64.dmg