name: Deploy Website

on:
  push:
    branches:
      - main
    tags:
      - 'v*.*.*'

concurrency:
  group: "deploy"

jobs:
  deploy-branch:
    if: startsWith(github.ref, 'refs/heads/')
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
      - uses: actions/setup-node@v6
        with:
          node-version: '24'
      - name: Install dependencies
        run: npm ci
      - name: Build Website
        run: ./tasks/build-website.sh -l $(node tasks/get-latest-release.js)
      - name: Check out openlayers.github.io
        uses: actions/checkout@v6
        with:
          repository: openlayers/openlayers.github.io
          ssh-key: ${{ secrets.OPENLAYERS_GITHUB_IO_KEY }}
          path: openlayers.github.io
      - run: |
          cp -r build/site/* openlayers.github.io/dist/
          cd openlayers.github.io
          if [ -n "$(git status --porcelain)" ]; then
            git config user.name "$(git --no-pager log --format=format:'%an' -n 1)"
            git config user.email "$(git --no-pager log --format=format:'%ae' -n 1)"
            git add .
            git commit -m "Website updates"
            git push origin main
          fi
  deploy-tag:
    if: startsWith(github.ref, 'refs/tags/')
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
      - uses: actions/setup-node@v6
        with:
          node-version: '24'
      - name: Install dependencies
        run: npm ci
      - name: Assert Latest Release
        run: node tasks/newest-tag.js --tag ${GITHUB_REF_NAME}
      - name: Build Website
        run: ./tasks/build-website.sh -l ${GITHUB_REF_NAME} -v ${GITHUB_REF_NAME}
      - name: Check out openlayers.github.io
        uses: actions/checkout@v6
        with:
          repository: openlayers/openlayers.github.io
          ssh-key: ${{ secrets.OPENLAYERS_GITHUB_IO_KEY }}
          path: openlayers.github.io
      - run: |
          cp -r build/site/* openlayers.github.io/dist/
          cd openlayers.github.io
          if [ -n "$(git status --porcelain)" ]; then
            git config user.name "$(git --no-pager log --format=format:'%an' -n 1)"
            git config user.email "$(git --no-pager log --format=format:'%ae' -n 1)"
            git add .
            git commit -m "Website updates"
            git push origin main
          fi