name: Validate README.md

on:
  pull_request:
    types: [opened, synchronize, reopened]
    paths:
      - "instructions/**"
      - "prompts/**"
      - "agents/**"
      - "collections/**"
      - "*.js"
      - "README.md"
      - "docs/**"
      - "skills/**"

jobs:
  validate-readme:
    permissions:
      pull-requests: write
      contents: read
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: "20"

      - name: Install dependencies
        run: npm install

      - name: Validate collections
        run: npm run collection:validate

      - name: Update README.md
        run: npm start

      - name: Check for file changes
        id: check-diff
        run: |
          if git diff --exit-code; then
            echo "No changes detected after running update script."
            echo "status=success" >> $GITHUB_OUTPUT
          else
            echo "Changes detected after running update script."
            echo "status=failure" >> $GITHUB_OUTPUT
            echo "diff<<EOF" >> $GITHUB_OUTPUT
            git diff >> $GITHUB_OUTPUT
            echo "EOF" >> $GITHUB_OUTPUT
          fi

      - name: Output diff to logs for non-write users
        if: steps.check-diff.outputs.status == 'failure' && github.event.pull_request.head.repo.permissions.push != true
        run: |
          echo "::group::File changes (changes needed)"
          echo "The following changes need to be made:"
          echo ""
          git diff
          echo "::endgroup::"

      - name: Comment on PR if files need updating
        if: steps.check-diff.outputs.status == 'failure' && github.event.pull_request.head.repo.permissions.push == true
        uses: marocchino/sticky-pull-request-comment@v2
        with:
          header: readme-validation
          message: |
            ## ⚠️ Generated files need to be updated

            The update script detected changes that need to be made.

            Please run `npm start` locally and commit the changes before merging this PR.

            <details>
              <summary>View diff</summary>

              ```diff
              ${{ steps.check-diff.outputs.diff }}
              ```
            </details>

      - name: Fail workflow if files need updating
        if: steps.check-diff.outputs.status == 'failure'
        run: |
          echo "❌ Generated files need to be updated. Please run `npm start` locally and commit the changes."
          exit 1
