name: "Go"
on:
  push:
    branches:
      - master
  pull_request:

jobs:
  checks:
    strategy:
      fail-fast: false
      matrix:
        os: ["ubuntu-latest", "macOS-latest"]
        go: ["1.19", "1.20"]
    runs-on: ${{ matrix.os }}
    steps:
      - name: Checkout
        uses: actions/checkout@v3

      - name: Set up Go ${{ matrix.go }}
        uses: WillAbides/setup-go-faster@v1.8.0
        with:
          go-version: ${{ matrix.go }}

      - name: Cache Go modules
        uses: actions/cache@v3
        with:
          path: ~/go/pkg/mod
          key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
          restore-keys: |
            ${{ runner.os }}-go-

      - name: Cache Go build cache
        uses: actions/cache@v3
        with:
          path: ~/.cache/go-build
          key: ${{ runner.os }}-go-build-${{ matrix.go }}
          restore-keys: |
            ${{ runner.os }}-go-build-

      - name: Run go vet
        run: "go vet ./..."

      - name: Run Staticcheck
        uses: dominikh/staticcheck-action@v1.3.0
        with:
          version: "2023.1.1"
          install-go: false
          cache-key: ${{ matrix.go }}