# Verify that generated code is up-to-date.
#
# Note that we run these checks regardless whether the input files have
# changed, because generated code can change in response to toolchain updates
# even if no files in the repository are modified.
name: Check generated code
on:
  pull_request:
    branches:
      - v0.38.x

permissions:
  contents: read

jobs:
  check-mocks-metrics:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/setup-go@v5
        with:
          go-version: "1.22"

      - uses: actions/checkout@v4

      - name: "Check generated mocks and metrics"
        run: |
          set -euo pipefail

          make mockery metrics

          git add .
          if ! git diff HEAD --stat --exit-code ; then
            echo ">> ERROR:"
            echo ">>"
            echo ">> Generated mocks and/or metrics require update (either Mockery or source files may have changed)."
            echo ">> Ensure your tools are up-to-date, re-run 'make mockery metrics' and update this PR."
            echo ">>"
            git diff
            exit 1
          fi

  check-proto:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/setup-go@v5
        with:
          go-version: "1.22"

      - uses: actions/checkout@v4
        with:
          fetch-depth: 1 # we need a .git directory to run git diff

      - name: "Check protobuf generated code"
        run: |
          set -euo pipefail

          make proto-gen

          git add .
          if ! git diff HEAD --stat --exit-code ; then
            echo ">> ERROR:"
            echo ">>"
            echo ">> Protobuf generated code requires update (either tools or .proto files may have changed)."
            echo ">> Ensure your tools are up-to-date, re-run 'make proto-gen' and update this PR."
            echo ">>"
            git diff
            exit 1
          fi
