---
name: Static Analysis
on: [push, pull_request]
permissions: read-all
jobs:
  run:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0
      - id: goversion
        run: echo "goversion=$(cat .go-version)" >> "$GITHUB_OUTPUT"
      - uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # v4.1.0
        with:
          go-version: ${{ steps.goversion.outputs.goversion }}
      - name: golangci-lint
        uses: golangci/golangci-lint-action@3a919529898de77ec3da873e3063ca4b10e7f5cc # v3.7.0
        with:
          version: v1.53.3
          args: --config tools/.golangci.yaml
      - name: protoc
        uses: arduino/setup-protoc@149f6c87b92550901b26acd1632e11c3662e381f # v1.3.0
        with:
          version: '3.20.3'
          repo-token: ${{ secrets.GITHUB_TOKEN }}
      - uses: actions-rs/toolchain@v1
        with:
          toolchain: stable
      - run: |
          set -euo pipefail

          cargo install marker --version 0.9.0
      - run: |
          set -euo pipefail

          make verify
      - run: |
          set -euo pipefail

          make fix

          DIFF=$(git status --porcelain)

          if [ -n "$DIFF" ]; then
            echo "These files were modified:"
            echo
            echo "$DIFF"
            echo
            exit 1
          fi
