name: Check Number of Games in Nexus Hub

on:
  push:
    paths:
      - 'NexusHub/**'
  pull_request:
    paths:
      - 'NexusHub/**'
  workflow_dispatch:

permissions:
  contents: write

jobs:
  check_nexushub:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout repository
        uses: actions/checkout@v6

      - name: Count files in NexusHub folder excluding Loader variants and README
        id: count_files
        run: |
          file_count=$(find NexusHub -type f ! -name "Loader" ! -name "Loader.luau" ! -name "README.md*" | wc -l)
          echo "File count: $file_count"
          echo "FILE_COUNT=$file_count" >> $GITHUB_ENV

      - name: Update Loader, README, and website
        run: |
          updated=false

          git config --global user.email "actions@github.com"
          git config --global user.name "GitHub Actions"

          # Update Loader.luau (source file)
          loader_file="NexusHub/Loader.luau"
          if [ -f "$loader_file" ]; then
            expected="-- Currently supported games: $FILE_COUNT"
            current=$(sed -n '2p' "$loader_file")
            if [[ "$current" != *"$expected"* ]]; then
              sed -i "2s|.*|$expected|" "$loader_file"
              git add "$loader_file"
              updated=true
              echo "Updated Loader.luau."
            fi
          fi

          # Update README.md
          readme_file="NexusHub/README.md"
          if [ -f "$readme_file" ]; then
            sed -i "s|- \*\*Supported Games\*\*:.*|- **Supported Games**: $FILE_COUNT|" "$readme_file"
            # Update the description line with the correct game count
            sed -i -E "s|(Nexus Hub is an innovative multi-game hub designed to support over )[0-9]+(\+)?( games,?)|\1${FILE_COUNT}+\3|" "$readme_file"
            git add "$readme_file"
            updated=true
            echo "Updated README.md."
          fi

          # Update website
          index_file="docs/index.html"
          if [ -f "$index_file" ]; then
            sed -i -E "s|Nexus Hub is an innovative multi-game hub designed to support over [0-9]+(\+)? games,?[^.]*\.?|Nexus Hub is an innovative multi-game hub designed to support over ${FILE_COUNT}+ games.|" "$index_file"
            sed -i -E "s/[0-9]+(\+)? Games/${FILE_COUNT}+ Games/gI" "$index_file"
            git add "$index_file"
            updated=true
            echo "Updated docs/index.html."
          fi

          if [ "$updated" = true ]; then
            git diff --cached --quiet && echo "No changes detected." || (
              git commit -m "chore: update supported game count and loader"
              git push
            )
          else
            echo "No files needed updating."
          fi
