name: Electron Master

defaults:
  run:
    shell: bash

env:
  CI: true

on:
  push:
    tags:
      - v**

concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: false

jobs:
  build:
    # this is so the assets can be added to the release
    permissions:
      contents: write
    strategy:
      matrix:
        os:
          - ubuntu-latest
          - windows-latest
          - macos-latest
    runs-on: ${{ matrix.os }}
    steps:
      - uses: actions/checkout@v4
      - if: ${{ startsWith(matrix.os, 'windows') }}
        run: pip.exe install setuptools
      - if: ${{ ! startsWith(matrix.os, 'windows') }}
        run: |
          mkdir .venv
          python3 -m venv .venv
          source .venv/bin/activate
          python3 -m pip install setuptools
      - if: ${{ startsWith(matrix.os, 'ubuntu') }}
        run: |
          sudo apt-get install flatpak -y
          sudo apt-get install flatpak-builder -y
          sudo flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
          sudo flatpak install org.freedesktop.Sdk/x86_64/23.08 -y
          sudo flatpak install org.freedesktop.Platform/x86_64/23.08 -y
          sudo flatpak install org.electronjs.Electron2.BaseApp/x86_64/23.08 -y
      - name: Set up environment
        uses: ./.github/actions/setup
      - name: Build Electron for Mac
        if: ${{ startsWith(matrix.os, 'macos') }}
        run: ./bin/package-electron
        env:
          CSC_KEY_PASSWORD: ${{ secrets.CSC_KEY_PASSWORD }}
          CSC_LINK: ${{ secrets.CSC_LINK }}
          APPLE_ID: ${{ secrets.APPLE_ID }}
          APPLE_APP_SPECIFIC_PASSWORD: ${{ secrets.APPLE_APP_SPECIFIC_PASSWORD }}
      - name: Build Electron
        if: ${{ ! startsWith(matrix.os, 'macos') }}
        run: ./bin/package-electron
      - name: Upload Build
        uses: actions/upload-artifact@v4
        with:
          name: actual-electron-${{ matrix.os }}
          path: |
            packages/desktop-electron/dist/*.dmg
            packages/desktop-electron/dist/*.exe
            !packages/desktop-electron/dist/Actual-windows.exe
            packages/desktop-electron/dist/*.AppImage
            packages/desktop-electron/dist/*.flatpak
      - name: Upload Windows Store Build
        if: ${{ startsWith(matrix.os, 'windows') }}
        uses: actions/upload-artifact@v4
        with:
          name: actual-electron-${{ matrix.os }}-appx
          path: |
            packages/desktop-electron/dist/*.appx
      - name: Add to Release
        uses: softprops/action-gh-release@v2
        with:
          files: |
            packages/desktop-electron/dist/*.dmg
            packages/desktop-electron/dist/*.exe
            !packages/desktop-electron/dist/Actual-windows.exe
            packages/desktop-electron/dist/*.AppImage
            packages/desktop-electron/dist/*.flatpak
