name: golangci-lint
on:
  # For now, only lint pull requests, not the main branches.
  pull_request:

  # TODO(andrew): enable for main branch after an initial waiting period.
  #push:
  #  branches:
  #    - main

  workflow_dispatch:

permissions:
  contents: read
  pull-requests: read

concurrency:
  group: ${{ github.workflow }}-$${{ github.head_ref || github.run_id }}
  cancel-in-progress: true

jobs:
  golangci:
    name: lint
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2

      - uses: actions/setup-go@f111f3307d8850f501ac008e886eec1fd1932a34 # v5.3.0
        with:
          go-version-file: go.mod
          cache: false

      - name: golangci-lint
        uses: golangci/golangci-lint-action@2226d7cb06a077cd73e56eedd38eecad18e5d837 # v6.5.0
        with:
          version: v1.64

          # Show only new issues if it's a pull request.
          only-new-issues: true
