name: Pull Request

on:
  workflow_dispatch: {}
  pull_request:
    branches:
      - main

jobs:
  lint:
    name: Lint
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v4
        with:
          fetch-depth: 0
      - name: Set up Go
        uses: actions/setup-go@v4
        with:
          go-version: 1.20.x
      - uses: dominikh/staticcheck-action@ba605356b4b29a60e87ab9404b712f3461e566dc #v1.3.0
        with:
          version: "2023.1.6"
          install-go: "false" # StaticCheck uses go v1.17 which does not support `any`
  test:
    name: Test
    strategy:
      fail-fast: false
      matrix:
        go-version:
          - 1.20.x
        platform:
          - macos-latest
          - windows-latest
          - ubuntu-latest
    runs-on: ${{ matrix.platform }}
    steps:
      - name: Checkout
        uses: actions/checkout@v4
        with:
          fetch-depth: 0
      - name: Set up Go
        uses: actions/setup-go@v4
        with:
          go-version: 1.20.x
      - name: Run tests
        run: |
          go test -v -coverprofile coverage.out -covermode atomic ./... 
      - name: Publish coverage
        uses: codecov/codecov-action@v3
        with:
          token: ${{ secrets.CODECOV_TOKEN }}
  build:
    name: Build
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v4
        with:
          fetch-depth: 0
      - name: Set up Go
        uses: actions/setup-go@v4
        with:
          go-version: 1.20.x
      - name: Build
        uses: goreleaser/goreleaser-action@7ec5c2b0c6cdda6e8bbb49444bc797dd33d74dd8 #v3
        with:
          version: v0.155.0
          args: --snapshot --skip-publish --debug
