# This workflow check
name: Operator code generation check

on:
  workflow_dispatch:
  push:
    branches:
      - main
      - "release/**"
    paths:
      - "operators/**"
      - "./.github/workflows/test-operator-codegen.yml"
  pull_request:
    paths:
      - "operators/**"
      - "./.github/workflows/test-operator-codegen.yml"

jobs:
  govulncheck:
    name: check-codegen
    runs-on: ubuntu-22.04
    steps:
      - name: Checkout
        uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0
        with:
          ref: ${{ !github.event.pull_request.head.repo.fork && github.head_ref || '' }}

      - name: Setup Go environment
        uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # v4.1.0
        with:
          go-version: "1.21.5"
          cache: true

      - name: Run code generation
        shell: bash
        working-directory: "operators/"
        run: |
          dirs=$(find . \! -name . -prune -type d)
          for dir in $dirs; do
            (cd "$dir"; make manifests generate)
          done

      - name: Check diff and fail on changes
        shell: bash
        run: git diff --exit-code
