---
name: Lint

on:
  push:
    branches:
      - main
    paths-ignore:
      - "package.json"
      - "package-lock.json"
  pull_request:
    branches:
      - main

jobs:
  golangci-lint:
    name: Go Lint
    runs-on: ubuntu-latest

    permissions:
      contents: read
      packages: read
      pull-requests: read

    steps:
      - name: Checkout code
        uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
        with:
          persist-credentials: false

      - name: Set up tools
        uses: jdx/mise-action@1648a7812b9aeae629881980618f079932869151 # v4

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

      - name: Run golangci-lint
        uses: golangci/golangci-lint-action@1e7e51e771db61008b38414a730f564565cf7c20 # v9.2.0
        with:
          version: v2.11.4
          install-mode: none
          args: --config .github/linters/.golangci.yml --timeout 5m
          # Only show new issues on PRs (not historical issues)
          only-new-issues: ${{ github.event_name == 'pull_request' }}
