name: Build Binaries

on:
  pull_request:
    branches:
      - '*'

env:
  GO_VERSION: '1.21'
  CGO_ENABLED: 0

jobs:

  build-webui:
    runs-on: ubuntu-22.04

    steps:
      - name: Check out code
        uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - name: Build webui
        run: |
          make clean-webui generate-webui
          tar czvf webui.tar.gz ./webui/static/

      - name: Artifact webui
        uses: actions/upload-artifact@v2
        with:
          name: webui.tar.gz
          path: webui.tar.gz

  build:
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ ubuntu-22.04, macos-latest, windows-latest ]
    needs:
      - build-webui

    steps:
      - name: Check out code
        uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - name: Set up Go ${{ env.GO_VERSION }}
        uses: actions/setup-go@v5
        with:
          go-version: ${{ env.GO_VERSION }}

      - name: Artifact webui
        uses: actions/download-artifact@v2
        with:
          name: webui.tar.gz

      - name: Untar webui
        run: tar xvf webui.tar.gz

      - name: Build
        run: make binary
