name: Rebuild Roadmap

on:
  issues:
    types: [opened, edited, closed, reopened, labeled, unlabeled, milestoned, demilestoned]

env:
  FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true

concurrency:
  group: website-build-${{ github.ref }}
  cancel-in-progress: false

permissions:
  contents: read

jobs:
  rebuild-roadmap:
    name: Rebuild website roadmap
    runs-on: ubuntu-latest
    # Only worth a rebuild if the "enhancement" label is involved: either the
    # issue currently carries it, or this event just added/removed it.
    if: contains(github.event.issue.labels.*.name, 'enhancement') || github.event.label.name == 'enhancement'

    steps:
      - name: Checkout
        uses: actions/checkout@v4.1.7
        with:
          ref: main
          ssh-key: ${{ secrets.WEBSITE_DEPLOY_KEY }}

      - name: Set up Node.js
        uses: actions/setup-node@v4
        with:
          node-version: "24"
          cache: npm
          cache-dependency-path: website/package-lock.json

      - name: Install dependencies
        working-directory: website
        run: npm ci

      - name: Build website
        working-directory: website
        run: npm run build
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

      - name: Commit rebuilt site
        run: |
          git config user.name "github-actions[bot]"
          git config user.email "github-actions[bot]@users.noreply.github.com"
          git add website/_site
          if git diff --cached --quiet; then
            echo "No changes to commit"
          else
            git commit -m "chore: rebuild website roadmap [skip ci]"
            git push
          fi
