name: Build
on:
  push:
    tags:
      - v*
    paths-ignore:
      - 'README.md'
      - '.github/ISSUE_TEMPLATE/**'
      - '.github/workflows/issues.yml'
  workflow_dispatch:

permissions: write-all

jobs:
  cleanup-dev-release:
    runs-on: ubuntu-latest
    steps:
      - name: Delete Dev Release Assets
        if: github.event_name == 'workflow_dispatch'
        continue-on-error: true
        run: |
          # Get release ID for dev tag
          echo "🔍 Looking for existing dev release..."
          RELEASE_ID=$(curl -s -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \
            "https://api.github.com/repos/${{ github.repository }}/releases/tags/dev" | \
            jq -r '.id // empty')

          if [ ! -z "$RELEASE_ID" ] && [ "$RELEASE_ID" != "empty" ]; then
            echo "✅ Found dev release with ID: $RELEASE_ID"

            echo "📋 Getting list of assets with pagination..."
            ALL_ASSETS="[]"
            PAGE=1
            PER_PAGE=100
            
            while true; do
              echo "📄 Fetching page $PAGE..."
              ASSETS_PAGE=$(curl -s -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \
                "https://api.github.com/repos/${{ github.repository }}/releases/$RELEASE_ID/assets?page=$PAGE&per_page=$PER_PAGE")

              PAGE_COUNT=$(echo "$ASSETS_PAGE" | jq '. | length')
              echo "📦 Found $PAGE_COUNT assets on page $PAGE"
              
              if [ "$PAGE_COUNT" -eq 0 ]; then
                echo "📋 No more assets found, stopping pagination"
                break
              fi

              ALL_ASSETS=$(echo "$ALL_ASSETS" "$ASSETS_PAGE" | jq -s '.[0] + .[1]')

              if [ "$PAGE_COUNT" -lt "$PER_PAGE" ]; then
                echo "📋 Last page reached (got $PAGE_COUNT < $PER_PAGE), stopping pagination"
                break
              fi
              
              PAGE=$((PAGE + 1))
            done
            
            TOTAL_ASSET_COUNT=$(echo "$ALL_ASSETS" | jq '. | length')
            echo "📦 Total assets found across all pages: $TOTAL_ASSET_COUNT"
            
            if [ "$TOTAL_ASSET_COUNT" -gt 0 ]; then
              # Delete each asset with detailed logging
              echo "$ALL_ASSETS" | jq -r '.[].id' | while read asset_id; do
                if [ ! -z "$asset_id" ]; then
                  echo "🗑️ Deleting asset ID: $asset_id"
                  RESPONSE=$(curl -s -w "HTTPSTATUS:%{http_code}" -X DELETE \
                    -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \
                    "https://api.github.com/repos/${{ github.repository }}/releases/assets/$asset_id")
                  
                  HTTP_CODE=$(echo $RESPONSE | tr -d '\n' | sed -e 's/.*HTTPSTATUS://')
                  if [ "$HTTP_CODE" = "204" ]; then
                    echo "✅ Successfully deleted asset $asset_id"
                  else
                    echo "❌ Failed to delete asset $asset_id (HTTP: $HTTP_CODE)"
                    echo "Response: $(echo $RESPONSE | sed -e 's/HTTPSTATUS:.*//')"
                  fi
                  # Add small delay to avoid rate limiting
                  sleep 0.5
                fi
              done
              echo "🎉 Finished deleting all $TOTAL_ASSET_COUNT assets"
            else
              echo "ℹ️  No assets found to delete"
            fi
          else
            echo "ℹ️  No existing dev release found"
          fi
      - name: Skip for Tag Release
        if: startsWith(github.ref, 'refs/tags/v')
        run: echo "Skipping cleanup for tag release"
  windows:
    needs: [cleanup-dev-release]
    if: always() && (startsWith(github.ref, 'refs/tags/v') || github.event_name == 'workflow_dispatch')
    strategy:
      fail-fast: false
      matrix:
        arch:
          - x64
          - ia32
          - arm64
    runs-on: windows-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v6
      - name: Setup pnpm
        uses: pnpm/action-setup@v4
      - name: Setup Node.js
        uses: actions/setup-node@v6
        with:
          node-version: 22
          cache: 'pnpm'
      - name: Install Dependencies
        env:
          npm_config_arch: ${{ matrix.arch }}
          npm_config_target_arch: ${{ matrix.arch }}
        run: pnpm install
      - name: Update Version for Dev Build
        if: github.event_name == 'workflow_dispatch'
        env:
          GITHUB_EVENT_NAME: workflow_dispatch
        run: node scripts/update-version.mjs
      - name: Prepare
        run: pnpm prepare --${{ matrix.arch }}
      - name: Build
        env:
          npm_config_arch: ${{ matrix.arch }}
          npm_config_target_arch: ${{ matrix.arch }}
        run: pnpm build:win --${{ matrix.arch }}
      - name: Add Portable Flag
        run: |
          New-Item -Path "PORTABLE" -ItemType File
          Get-ChildItem dist/*portable.7z | ForEach-Object {
            7z a $_.FullName PORTABLE
          }
      - name: Generate checksums
        run: pnpm checksum setup.exe portable.7z
      - name: Copy Legacy Artifacts
        run: pnpm copy-legacy
      - name: Upload Artifacts
        if: startsWith(github.ref, 'refs/heads/')
        uses: actions/upload-artifact@v6
        with:
          name: Windows ${{ matrix.arch }}
          path: |
            dist/*.sha256
            dist/*setup.exe
            dist/*portable.7z
          if-no-files-found: error
      - name: Publish Release
        if: startsWith(github.ref, 'refs/tags/v')
        uses: softprops/action-gh-release@v2
        with:
          files: |
            dist/*.sha256
            dist/*setup.exe
            dist/*portable.7z
          token: ${{ secrets.GITHUB_TOKEN }}
      - name: Publish Dev Release
        if: github.event_name == 'workflow_dispatch'
        uses: softprops/action-gh-release@v2
        with:
          tag_name: dev
          files: |
            dist/*.sha256
            dist/*setup.exe
            dist/*portable.7z
          prerelease: true
          draft: false
          token: ${{ secrets.GITHUB_TOKEN }}

  windows7:
    needs: [cleanup-dev-release]
    if: always() && (startsWith(github.ref, 'refs/tags/v') || github.event_name == 'workflow_dispatch')
    strategy:
      fail-fast: false
      matrix:
        arch:
          - x64
          - ia32
    runs-on: windows-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v6
      - name: Setup pnpm
        uses: pnpm/action-setup@v4
      - name: Setup Node.js
        uses: actions/setup-node@v6
        with:
          node-version: 22
          cache: 'pnpm'
      - name: Install Dependencies
        env:
          npm_config_arch: ${{ matrix.arch }}
          npm_config_target_arch: ${{ matrix.arch }}
        run: |
          pnpm install
          pnpm add -D electron@22.3.27
          (Get-Content electron-builder.yml) -replace 'windows', 'win7' | Set-Content electron-builder.yml
          # Electron 22 requires CJS format
          (Get-Content package.json) -replace '"type": "module"', '"type": "commonjs"' | Set-Content package.json
      - name: Update Version for Dev Build
        if: github.event_name == 'workflow_dispatch'
        env:
          GITHUB_EVENT_NAME: workflow_dispatch
        run: node scripts/update-version.mjs
      - name: Prepare
        env:
          LEGACY_BUILD: 'true'
        run: pnpm prepare --${{ matrix.arch }}
      - name: Build
        env:
          npm_config_arch: ${{ matrix.arch }}
          npm_config_target_arch: ${{ matrix.arch }}
          LEGACY_BUILD: 'true'
        run: pnpm build:win --${{ matrix.arch }}
      - name: Add Portable Flag
        run: |
          New-Item -Path "PORTABLE" -ItemType File
          Get-ChildItem dist/*portable.7z | ForEach-Object {
            7z a $_.FullName PORTABLE
          }
      - name: Generate checksums
        run: pnpm checksum setup.exe portable.7z
      - name: Copy Legacy Artifacts
        run: pnpm copy-legacy
      - name: Upload Artifacts
        if: startsWith(github.ref, 'refs/heads/')
        uses: actions/upload-artifact@v6
        with:
          name: Win7 ${{ matrix.arch }}
          path: |
            dist/*.sha256
            dist/*setup.exe
            dist/*portable.7z
          if-no-files-found: error
      - name: Publish Release
        if: startsWith(github.ref, 'refs/tags/v')
        uses: softprops/action-gh-release@v2
        with:
          files: |
            dist/*.sha256
            dist/*setup.exe
            dist/*portable.7z
          token: ${{ secrets.GITHUB_TOKEN }}
      - name: Publish Dev Release
        if: github.event_name == 'workflow_dispatch'
        uses: softprops/action-gh-release@v2
        with:
          tag_name: dev
          files: |
            dist/*.sha256
            dist/*setup.exe
            dist/*portable.7z
          prerelease: true
          draft: false
          token: ${{ secrets.GITHUB_TOKEN }}

  linux:
    needs: [cleanup-dev-release]
    if: always() && (startsWith(github.ref, 'refs/tags/v') || github.event_name == 'workflow_dispatch')
    strategy:
      fail-fast: false
      matrix:
        arch:
          - x64
          - arm64
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v6
      - name: Setup pnpm
        uses: pnpm/action-setup@v4
      - name: Setup Node.js
        uses: actions/setup-node@v6
        with:
          node-version: 22
          cache: 'pnpm'
      - name: Install Dependencies
        env:
          npm_config_arch: ${{ matrix.arch }}
          npm_config_target_arch: ${{ matrix.arch }}
        run: |
          pnpm install
          sed -i "s/productName: Clash Party/productName: clash-party/" electron-builder.yml
      - name: Update Version for Dev Build
        if: github.event_name == 'workflow_dispatch'
        env:
          GITHUB_EVENT_NAME: workflow_dispatch
        run: node scripts/update-version.mjs
      - name: Prepare
        run: pnpm prepare --${{ matrix.arch }}
      - name: Build
        env:
          npm_config_arch: ${{ matrix.arch }}
          npm_config_target_arch: ${{ matrix.arch }}
        run: pnpm build:linux --${{ matrix.arch }}
      - name: Generate checksums
        run: pnpm checksum .deb .rpm
      - name: Copy Legacy Artifacts
        run: pnpm copy-legacy
      - name: Upload Artifacts
        if: startsWith(github.ref, 'refs/heads/')
        uses: actions/upload-artifact@v6
        with:
          name: Linux ${{ matrix.arch }}
          path: |
            dist/*.sha256
            dist/*.deb
            dist/*.rpm
          if-no-files-found: error
      - name: Publish Release
        if: startsWith(github.ref, 'refs/tags/v')
        uses: softprops/action-gh-release@v2
        with:
          files: |
            dist/*.sha256
            dist/*.deb
            dist/*.rpm
          token: ${{ secrets.GITHUB_TOKEN }}
      - name: Publish Dev Release
        if: github.event_name == 'workflow_dispatch'
        uses: softprops/action-gh-release@v2
        with:
          tag_name: dev
          files: |
            dist/*.sha256
            dist/*.deb
            dist/*.rpm
          prerelease: true
          draft: false
          token: ${{ secrets.GITHUB_TOKEN }}

  macos:
    needs: [cleanup-dev-release]
    if: always() && (startsWith(github.ref, 'refs/tags/v') || github.event_name == 'workflow_dispatch')
    strategy:
      fail-fast: false
      matrix:
        arch:
          - x64
          - arm64
    runs-on: macos-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v6
      - name: Setup pnpm
        uses: pnpm/action-setup@v4
      - name: Setup Node.js
        uses: actions/setup-node@v6
        with:
          node-version: 22
          cache: 'pnpm'
      - name: Install Dependencies
        env:
          npm_config_arch: ${{ matrix.arch }}
          npm_config_target_arch: ${{ matrix.arch }}
        run: pnpm install
      - name: Update Version for Dev Build
        if: github.event_name == 'workflow_dispatch'
        env:
          GITHUB_EVENT_NAME: workflow_dispatch
        run: node scripts/update-version.mjs
      - name: Prepare
        run: pnpm prepare --${{ matrix.arch }}
      - name: Build
        env:
          npm_config_arch: ${{ matrix.arch }}
          npm_config_target_arch: ${{ matrix.arch }}
          APPLE_ID: ${{ secrets.APPLE_ID }}
          APPLE_APP_SPECIFIC_PASSWORD: ${{ secrets.APPLE_APP_SPECIFIC_PASSWORD }}
          APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
          CSC_LINK: ${{ secrets.CSC_LINK }}
          CSC_KEY_PASSWORD: ${{ secrets.CSC_KEY_PASSWORD }}
        run: |
          chmod +x build/pkg-scripts/postinstall build/pkg-scripts/preinstall
          pnpm build:mac --${{ matrix.arch }}
      - name: Setup temporary installer signing keychain
        uses: apple-actions/import-codesign-certs@v6
        with:
          p12-file-base64: ${{ secrets.CSC_INSTALLER_LINK }}
          p12-password: ${{ secrets.CSC_INSTALLER_KEY_PASSWORD }}
      - name: Sign the Apple pkg
        run: |
          for pkg_name in $(ls -1 dist/*.pkg); do
            pkg_name=$(ls -1 dist/*.pkg)
            mv $pkg_name Unsigned-Workbench.pkg
            productsign --sign "Developer ID Installer: Prometheus Advertising Corp (489PDK5LP3)" Unsigned-Workbench.pkg $pkg_name
            rm -f Unsigned-Workbench.pkg
            xcrun notarytool submit $pkg_name --apple-id $APPLE_ID --team-id $APPLE_TEAM_ID --password $APPLE_APP_SPECIFIC_PASSWORD --wait
          done
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          APPLE_APP_SPECIFIC_PASSWORD: ${{ secrets.APPLE_APP_SPECIFIC_PASSWORD }}
          APPLE_ID: ${{ secrets.APPLE_ID }}
          APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
      - name: Generate checksums
        run: pnpm checksum .pkg
      - name: Copy Legacy Artifacts
        run: pnpm copy-legacy
      - name: Upload Artifacts
        if: startsWith(github.ref, 'refs/heads/')
        uses: actions/upload-artifact@v6
        with:
          name: MacOS ${{ matrix.arch }}
          path: |
            dist/*.sha256
            dist/*.pkg
          if-no-files-found: error
      - name: Publish Release
        if: startsWith(github.ref, 'refs/tags/v')
        uses: softprops/action-gh-release@v2
        with:
          files: |
            dist/*.sha256
            dist/*.pkg
          token: ${{ secrets.GITHUB_TOKEN }}
      - name: Publish Dev Release
        if: github.event_name == 'workflow_dispatch'
        uses: softprops/action-gh-release@v2
        with:
          tag_name: dev
          files: |
            dist/*.sha256
            dist/*.pkg
          prerelease: true
          draft: false
          token: ${{ secrets.GITHUB_TOKEN }}

  macos10:
    needs: [cleanup-dev-release]
    if: always() && (startsWith(github.ref, 'refs/tags/v') || github.event_name == 'workflow_dispatch')
    strategy:
      fail-fast: false
      matrix:
        arch:
          - x64
          - arm64
    runs-on: macos-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v6
      - name: Setup pnpm
        uses: pnpm/action-setup@v4
      - name: Setup Node.js
        uses: actions/setup-node@v6
        with:
          node-version: 22
          cache: 'pnpm'
      - name: Install Dependencies
        env:
          npm_config_arch: ${{ matrix.arch }}
          npm_config_target_arch: ${{ matrix.arch }}
        run: |
          pnpm install
          pnpm add -D electron@32.2.2
      - name: Update Version for Dev Build
        if: github.event_name == 'workflow_dispatch'
        env:
          GITHUB_EVENT_NAME: workflow_dispatch
        run: node scripts/update-version.mjs
      - name: Prepare
        run: pnpm prepare --${{ matrix.arch }}
      - name: Build
        env:
          npm_config_arch: ${{ matrix.arch }}
          npm_config_target_arch: ${{ matrix.arch }}
          APPLE_ID: ${{ secrets.APPLE_ID }}
          APPLE_APP_SPECIFIC_PASSWORD: ${{ secrets.APPLE_APP_SPECIFIC_PASSWORD }}
          APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
          CSC_LINK: ${{ secrets.CSC_LINK }}
          CSC_KEY_PASSWORD: ${{ secrets.CSC_KEY_PASSWORD }}
        run: |
          sed -i "" -e "s/macos/catalina/" electron-builder.yml
          chmod +x build/pkg-scripts/postinstall build/pkg-scripts/preinstall
          pnpm build:mac --${{ matrix.arch }}
      - name: Setup temporary installer signing keychain
        uses: apple-actions/import-codesign-certs@v6
        with:
          p12-file-base64: ${{ secrets.CSC_INSTALLER_LINK }}
          p12-password: ${{ secrets.CSC_INSTALLER_KEY_PASSWORD }}
      - name: Sign the Apple pkg
        run: |
          for pkg_name in $(ls -1 dist/*.pkg); do
            pkg_name=$(ls -1 dist/*.pkg)
            mv $pkg_name Unsigned-Workbench.pkg
            productsign --sign "Developer ID Installer: Prometheus Advertising Corp (489PDK5LP3)" Unsigned-Workbench.pkg $pkg_name
            rm -f Unsigned-Workbench.pkg
            xcrun notarytool submit $pkg_name --apple-id $APPLE_ID --team-id $APPLE_TEAM_ID --password $APPLE_APP_SPECIFIC_PASSWORD --wait
          done
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          APPLE_APP_SPECIFIC_PASSWORD: ${{ secrets.APPLE_APP_SPECIFIC_PASSWORD }}
          APPLE_ID: ${{ secrets.APPLE_ID }}
          APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
      - name: Generate checksums
        run: pnpm checksum .pkg
      - name: Copy Legacy Artifacts
        run: pnpm copy-legacy
      - name: Upload Artifacts
        if: startsWith(github.ref, 'refs/heads/')
        uses: actions/upload-artifact@v6
        with:
          name: Catalina ${{ matrix.arch }}
          path: |
            dist/*.sha256
            dist/*.pkg
          if-no-files-found: error
      - name: Publish Release
        if: startsWith(github.ref, 'refs/tags/v')
        uses: softprops/action-gh-release@v2
        with:
          files: |
            dist/*.sha256
            dist/*.pkg
          token: ${{ secrets.GITHUB_TOKEN }}
      - name: Publish Dev Release
        if: github.event_name == 'workflow_dispatch'
        uses: softprops/action-gh-release@v2
        with:
          tag_name: dev
          files: |
            dist/*.sha256
            dist/*.pkg
          prerelease: true
          draft: false
          token: ${{ secrets.GITHUB_TOKEN }}

  updater:
    if: startsWith(github.ref, 'refs/tags/v') || github.event_name == 'workflow_dispatch'
    needs: [windows, windows7, linux, macos, macos10]
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v6
      - name: Setup pnpm
        uses: pnpm/action-setup@v4
      - name: Setup Node.js
        uses: actions/setup-node@v6
        with:
          node-version: 22
          cache: 'pnpm'
      - name: Install Dependencies
        run: pnpm install
      - name: Update Version for Dev Build
        if: github.event_name == 'workflow_dispatch'
        env:
          GITHUB_EVENT_NAME: workflow_dispatch
        run: node scripts/update-version.mjs
      - name: Telegram Notification
        if: startsWith(github.ref, 'refs/tags/v')
        env:
          TELEGRAM_BOT_TOKEN: ${{ secrets.TELEGRAM_BOT_TOKEN }}
          RELEASE_TYPE: release
        run: pnpm telegram
      - name: Telegram Dev Notification
        if: github.event_name == 'workflow_dispatch'
        env:
          TELEGRAM_BOT_TOKEN: ${{ secrets.TELEGRAM_BOT_TOKEN }}
          GITHUB_SHA: ${{ github.sha }}
          RELEASE_TYPE: dev
        run: pnpm telegram:dev
      - name: Generate latest.yml
        run: pnpm updater
      - name: Publish Release
        if: startsWith(github.ref, 'refs/tags/v')
        uses: softprops/action-gh-release@v2
        with:
          files: latest.yml
          body_path: changelog.md
          token: ${{ secrets.GITHUB_TOKEN }}
      - name: Publish Dev Release
        if: github.event_name == 'workflow_dispatch'
        uses: softprops/action-gh-release@v2
        with:
          tag_name: dev
          files: latest.yml
          body_path: changelog.md
          prerelease: true
          draft: false
          token: ${{ secrets.GITHUB_TOKEN }}

  aur-release-updater:
    strategy:
      fail-fast: false
      matrix:
        pkgname:
          - mihomo-party-electron-bin
          - mihomo-party-electron
          - mihomo-party-bin
          - mihomo-party
    if: startsWith(github.ref, 'refs/tags/v')
    needs: updater
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v6
      - name: Update Version
        run: |
          sed -i "s/pkgver=.*/pkgver=$(echo ${{ github.ref }} | tr -d 'refs/tags/v')/" aur/${{ matrix.pkgname }}/PKGBUILD
      - name: Update Checksums
        if: matrix.pkgname == 'mihomo-party' || matrix.pkgname == 'mihomo-party-electron'
        run: |
          wget https://github.com/${{ github.repository }}/archive/refs/tags/$(echo ${{ github.ref }} | tr -d 'refs/tags/').tar.gz -O release.tar.gz
          sed -i "s/sha256sums=.*/sha256sums=(\"$(sha256sum ./release.tar.gz | awk '{print $1}')\"/" aur/mihomo-party/PKGBUILD
          sed -i "s/sha256sums=.*/sha256sums=(\"$(sha256sum ./release.tar.gz | awk '{print $1}')\"/" aur/mihomo-party-electron/PKGBUILD
      - name: Update Checksums
        if: matrix.pkgname == 'mihomo-party-bin' || matrix.pkgname == 'mihomo-party-electron-bin'
        run: |
          wget https://github.com/${{ github.repository }}/releases/download/$(echo ${{ github.ref }} | tr -d 'refs/tags/')/clash-party-linux-$(echo ${{ github.ref }} | tr -d 'refs/tags/v')-amd64.deb -O amd64.deb
          wget https://github.com/${{ github.repository }}/releases/download/$(echo ${{ github.ref }} | tr -d 'refs/tags/')/clash-party-linux-$(echo ${{ github.ref }} | tr -d 'refs/tags/v')-arm64.deb -O arm64.deb
          sed -i "s/sha256sums_x86_64=.*/sha256sums_x86_64=(\"$(sha256sum ./amd64.deb | awk '{print $1}')\")/" aur/mihomo-party-bin/PKGBUILD
          sed -i "s/sha256sums_aarch64=.*/sha256sums_aarch64=(\"$(sha256sum ./arm64.deb | awk '{print $1}')\")/" aur/mihomo-party-bin/PKGBUILD
          sed -i "s/sha256sums_x86_64=.*/sha256sums_x86_64=(\"$(sha256sum ./amd64.deb | awk '{print $1}')\")/" aur/mihomo-party-electron-bin/PKGBUILD
          sed -i "s/sha256sums_aarch64=.*/sha256sums_aarch64=(\"$(sha256sum ./arm64.deb | awk '{print $1}')\")/" aur/mihomo-party-electron-bin/PKGBUILD
      - name: Publish AUR package
        uses: KSXGitHub/github-actions-deploy-aur@v2.7.2
        with:
          pkgname: ${{ matrix.pkgname }}
          pkgbuild: aur/${{ matrix.pkgname }}/PKGBUILD
          commit_username: pompurin404
          commit_email: pompurin404@mihomo.party
          ssh_private_key: ${{ secrets.AUR_SSH_PRIVATE_KEY }}
          commit_message: Update AUR package
          ssh_keyscan_types: rsa,ed25519
          allow_empty_commits: false

  aur-git-updater:
    if: startsWith(github.ref, 'refs/heads/')
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
        with:
          fetch-depth: 0
      - name: update version
        run: |
          sed -i "s/pkgver=.*/pkgver=$(git describe --long 2>/dev/null | sed 's/\([^-]*-g\)/r\1/;s/-/./g' | tr -d 'v')/" aur/mihomo-party-git/PKGBUILD
      - name: Publish AUR package
        uses: KSXGitHub/github-actions-deploy-aur@v2.7.2
        with:
          pkgname: mihomo-party-git
          pkgbuild: aur/mihomo-party-git/PKGBUILD
          commit_username: pompurin404
          commit_email: pompurin404@mihomo.party
          ssh_private_key: ${{ secrets.AUR_SSH_PRIVATE_KEY }}
          commit_message: Update AUR package
          ssh_keyscan_types: rsa,ed25519
          allow_empty_commits: false

  winget:
    if: startsWith(github.ref, 'refs/tags/v')
    name: Update WinGet Package
    needs: windows
    runs-on: ubuntu-latest
    steps:
      - name: Get Tag Name
        run: echo "VERSION=$(echo ${{ github.ref }} | tr -d 'refs/tags/v')" >> $GITHUB_ENV
      - name: Submit to Winget
        uses: vedantmgoyal9/winget-releaser@main
        with:
          identifier: Mihomo-Party.Mihomo-Party
          version: ${{env.VERSION}}
          release-tag: v${{env.VERSION}}
          installers-regex: 'clash-party-windows-.*setup\.exe$'
          token: ${{ secrets.POMPURIN404_TOKEN }}
