name: Validate

on:
  pull_request:
    branches:
      - '*'

env:
  GO_VERSION: '1.21'
  GOLANGCI_LINT_VERSION: v1.55.2
  MISSSPELL_VERSION: v0.4.1

jobs:

  validate:
    runs-on: ubuntu-22.04

    steps:
      - name: Check out code
        uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - name: Set up Go ${{ env.GO_VERSION }}
        uses: actions/setup-go@v5
        with:
          go-version: ${{ env.GO_VERSION }}

      - name: Install golangci-lint ${{ env.GOLANGCI_LINT_VERSION }}
        run: curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin ${GOLANGCI_LINT_VERSION}

      - name: Install missspell ${{ env.MISSSPELL_VERSION }}
        run: curl -sfL https://raw.githubusercontent.com/golangci/misspell/master/install-misspell.sh | sh -s -- -b $(go env GOPATH)/bin ${MISSSPELL_VERSION}

      - name: Avoid generating webui
        run: touch webui/static/index.html

      - name: Validate
        run: make validate

  validate-generate:
    runs-on: ubuntu-22.04

    steps:
      - name: Check out code
        uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - name: Set up Go ${{ env.GO_VERSION }}
        uses: actions/setup-go@v5
        with:
          go-version: ${{ env.GO_VERSION }}

      - name: go generate
        run: |
          make generate
          git diff --exit-code

      - name: go mod tidy
        run: |
          go mod tidy
          git diff --exit-code

      - name: make generate-crd
        run: |
          make generate-crd
          git diff --exit-code
