---
name: Build
on: [push, pull_request]
permissions: read-all

jobs:
  build:
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        target:
          - linux-amd64
          - linux-386
          - darwin-amd64
          - darwin-arm64
          - windows-amd64
          - linux-arm
          - linux-arm64
          - linux-ppc64le
          - linux-s390x
    steps:
      - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0
      - id: goversion
        run: echo "goversion=$(cat .go-version)" >> "$GITHUB_OUTPUT"
      - uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # v4.1.0
        with:
          go-version: ${{ steps.goversion.outputs.goversion }}
      - env:
          TARGET: ${{ matrix.target }}
        run: |
          set -euo pipefail

          echo "${TARGET}"
          case "${TARGET}" in
            linux-amd64)
              GOOS=linux GOARCH=amd64 make build
              ;;
            linux-386)
              GOOS=linux GOARCH=386 make build
              ;;
            darwin-amd64)
              GOOS=darwin GOARCH=amd64 make build
              ;;
            darwin-arm64)
              GOOS=darwin GOARCH=arm64 make build
              ;;
            windows-amd64)
              GOOS=windows GOARCH=amd64 make build
              ;;
            linux-arm)
              GOOS=linux GOARCH=arm make build
              ;;
            linux-arm64)
              GOOS=linux GOARCH=arm64 make build
              ;;
            linux-ppc64le)
              GOOS=linux GOARCH=ppc64le make build
              ;;
            linux-s390x)
              GOOS=linux GOARCH=s390x make build
              ;;
            *)
              echo "Failed to find target"
              exit 1
              ;;
          esac
