name: Release

on:
    push:
        tags:
            - v*
    workflow_dispatch:

jobs:
    release:
        runs-on: ${{ matrix.os }}

        strategy:
            matrix:
                os: [macos-latest, ubuntu-latest, windows-latest]
                include:
                    - os: macos-latest
                      platform: mac
                    - os: ubuntu-latest
                      platform: linux
                    - os: windows-latest
                      platform: windows

        steps:
            - uses: actions/checkout@v4
            - uses: pnpm/action-setup@v4 # Install pnpm using packageManager key in package.json

            - name: Use Node.js 20
              uses: actions/setup-node@v4
              with:
                  node-version: 20
                  cache: "pnpm"

            - name: Install dependencies
              run: pnpm install --frozen-lockfile

            - name: Build
              run: pnpm build

            - name: Run Electron Builder
              if: ${{ matrix.platform != 'mac' }}
              run: |
                  pnpm electron-builder --${{ matrix.platform }} --publish always
              env:
                  GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

            - name: Run Electron Builder
              if: ${{ matrix.platform == 'mac' }}
              run: |
                  echo "$API_KEY" > apple.p8
                  pnpm electron-builder --${{ matrix.platform }} --publish always
              env:
                GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
                CSC_LINK: ${{ secrets.APPLE_SIGNING_CERT }}
                CSC_KEY_PASSWORD: ${{ secrets.APPLE_SIGNING_CERT_PASSWORD }}
                API_KEY: ${{ secrets.APPLE_API_KEY }}
                APPLE_API_KEY: apple.p8
                APPLE_API_KEY_ID: ${{ secrets.APPLE_API_KEY_ID }}
                APPLE_API_ISSUER: ${{ secrets.APPLE_API_ISSUER }}
