name: Lint
on:
  pull_request:
    types:
      - opened
      - reopened
      - synchronize
      - ready_for_review
jobs:
  golangci-lint:
    name: lint
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/cache@v4
        with:
          path: ~/go/pkg/mod
          key: ${{ runner.os }}-go${{ matrix.go-version }}-${{ hashFiles('**/go.mod') }}-${{ hashFiles('**/go.sum') }}
      - name: golangci-lint
        uses: golangci/golangci-lint-action@v6
        with:
          version: latest
          args: "--config .golintci.yaml"
          only-new-issues: true # only show new issues in the PR, not all.

  semgrep:
    name: semgrep
    runs-on: ubuntu-latest
    container:
      image: returntocorp/semgrep
    if: (github.actor != 'dependabot[bot]')
    steps:
      - uses: actions/checkout@v4
      - run: semgrep ci --config .semgrep.yml
        env:
          # only trigger for files in this change
          SEMGREP_BASELINE_BRANCH: ${{ github.head_ref }}

  # structslop:
  #  name: structslop
  #  runs-on: ubuntu-latest
  #  steps:
  #    - uses: actions/checkout@v4
  #    - uses: actions/setup-go@v3
  #      with:
  #        go-version: "1.18"
  #    - name: structslop
  #      run: |
  #        go generate -tags tools tools/tools.go
  #        $(go env GOPATH)/bin/structslop .
