---
name: Go

on:
  push:
    branches: [master]
  pull_request:
    branches: [master]

jobs:
  # TODO: is it possible to DRY out these jobs? Aside from `runs-on`, they are
  # identical.
  # See: https://github.com/actions/runner/issues/1182
  build-linux:
    runs-on: [ubuntu-latest]
    steps:
      - uses: actions/checkout@v2
      - name: Set up Go
        uses: actions/setup-go@v2
        with:
          go-version: 1.19
      - name: Set up Revive (linter)
        run: go get -u github.com/boyter/scc github.com/mgechev/revive
        env:
          GO111MODULE: "off"
      - name: Build
        run: make build
      - name: Test
        run: make test

  build-osx:
    runs-on: [macos-latest]
    steps:
      - uses: actions/checkout@v2
      - name: Set up Go
        uses: actions/setup-go@v2
        with:
          go-version: 1.19
      - name: Set up Revive (linter)
        run: go get -u github.com/boyter/scc github.com/mgechev/revive
        env:
          GO111MODULE: "off"
      - name: Build
        run: make build
      - name: Test
        run: make test
