name: Release Build

on:
  release:
    types: [published]

permissions:
  contents: write

jobs:
  build:
    strategy:
      matrix:
        include:
          - os: ubuntu-22.04
            platform: linux
          - os: macos-latest
            platform: mac
          - os: windows-latest
            platform: win
    runs-on: ${{ matrix.os }}
    steps:
      - name: Checkout tag
        uses: actions/checkout@v6
        with:
          ref: ${{ github.event.release.tag_name }}

      - name: Setup Node 24
        uses: actions/setup-node@v6
        with:
          node-version: '24'

      - name: Install linux dependencies
        if: matrix.platform == 'linux'
        run: |
          sudo apt-get update
          sudo apt-get install -y libgtk-3-dev webkit2gtk-4.0 libappindicator3-dev librsvg2-dev patchelf

      - name: Install dependencies
        uses: nick-fields/retry@v3
        with:
          timeout_minutes: 10
          max_attempts: 3
          command: npm ci

      - name: Build app
        run: npm run electron:build

      - name: Upload artifacts to release
        env:
          GH_TOKEN: ${{ github.token }}
        shell: bash
        run: |
          shopt -s nullglob
          files=(release/*.dmg release/*.AppImage release/*.exe release/*.zip release/*.deb release/*.rpm)
          if [ ${#files[@]} -gt 0 ]; then
            gh release upload "${{ github.event.release.tag_name }}" "${files[@]}" --clobber
          else
            echo "No release artifacts found"
            exit 1
          fi
