name: Docs Check
on:
  workflow_dispatch:
  pull_request:
    paths:
      - 'internal/readme/**'
      - 'README.md'
      - 'internal/docs/**'
      - 'docs/**'

permissions:
  contents: read

jobs:
  docs-check:
    runs-on: ubuntu-latest
    steps:
      - name: Set up Go
        uses: actions/setup-go@7a3fe6cf4cb3a834922a1244abfce67bcef6a0c5 # v6.2.0
      - name: Check out code
        uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
      - name: Check docs are up-to-date
        run: |
          go generate ./...
          if [ -n "$(git status --porcelain)" ]; then
            echo "ERROR: docs are not up-to-date!"
            echo ""
            echo "The docs differ from what would be generated by go generate ./..."
            echo "Please update internal/**/*.src.md instead of directly editing README.md or docs/ files,"
            echo "then run go generate ./... to regenerate docs."
            echo ""
            echo "Changes:"
            git status --porcelain
            echo ""
            echo "Diff:"
            git diff
            exit 1
          fi
          echo "Docs are up-to-date."
