on:
  workflow_call:

jobs:
  build:
    strategy:
      matrix:
        include:
          - os: windows-latest
            suffix: windows
            artifact: "aerofly-startgeraet-gui-windows-setup.exe"
          - os: macos-latest
            suffix: macos
            artifact: "aerofly-startgeraet-gui-macos.dmg"
          - os: ubuntu-latest
            suffix: linux

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

    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: "22"
          cache: "npm"

      - name: Install dependencies
        run: npm ci

      - name: Install Linux build deps
        if: runner.os == 'Linux'
        run: |
          sudo apt-get install -y fakeroot binutils

      - name: Build GUI application
        env:
          CSC_IDENTITY_AUTO_DISCOVERY: false
        run: |
          mkdir -p ./artifacts/gui
          npx electron-builder --publish never ${{ runner.os == 'macOS' && '--universal' || '' }}

      - name: Upload artifacts (Windows/macOS)
        if: runner.os != 'Linux'
        uses: actions/upload-artifact@v4
        with:
          name: gui-artifact-${{ matrix.suffix }}
          path: ./artifacts/gui/${{ matrix.artifact }}

      - name: Upload artifacts (Linux)
        if: runner.os == 'Linux'
        uses: actions/upload-artifact@v4
        with:
          name: gui-artifact-linux
          path: |
            ./artifacts/gui/*.AppImage
            ./artifacts/gui/*.deb
