name: CI

on:
  push:
    branches: [ main ]
  pull_request:
    types: [opened, reopened, synchronize]

jobs:
  build-test:
    name: Build, test & format
    strategy:
      matrix:
        go-version: [1.19.x]
        platform: [ubuntu-latest, macos-latest, windows-latest]
    runs-on: ${{ matrix.platform }}
    steps:
    - uses: actions/checkout@v2

    - name: setup go
      uses: actions/setup-go@cdcb36043654635271a94b9a6d1392de5bb323a7  # v5.0.1
      with:
        go-version: ${{ matrix.go-version }}

    - name: Build
      run: go build -v ./...

    - name: Test
      run: go test -v ./...

    - name: Format
      if: matrix.platform == 'ubuntu-latest'
      run: if [ "$(gofmt -s -l . | wc -l)" -gt 0 ]; then exit 1; fi
