name: Update Stable Tag

# taken directly from OSGeo/PROJ
on:
  push:
    branches:
      - '**'  # Matches all branches, but we later filter on the one matching the STABLE_BRANCH repository variable

permissions:
    contents: read

jobs:
  update-stable-tag:
    runs-on: ubuntu-latest
    if: github.repository == 'PDAL/PDAL'
    permissions:
        contents: write
    steps:
      - name: Check branch match
        id: check_branch
        env:
          STABLE_BRANCH: ${{ vars.STABLE_BRANCH }} # Repository variable
        run: |
          echo "Push detected on branch $GITHUB_REF"
          if [[ "${GITHUB_REF#refs/heads/}" != "${STABLE_BRANCH}" ]]; then
            echo "This workflow only runs for branch $STABLE_BRANCH. Skipping further steps."
            echo "run=false" >> $GITHUB_OUTPUT
          else
            echo "run=true" >> $GITHUB_OUTPUT
          fi

      - name: Checkout code
        if: steps.check_branch.outputs.run == 'true'
        uses: actions/checkout@v4

      - name: Tag
        if: steps.check_branch.outputs.run == 'true'
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        run: |
          git config --global user.email "PDAL-bot@example.com"
          git config --global user.name "PDAL-bot"
          touch .dummy-file
          git add .dummy-file
          # Do that so that stable doesn't have the same git sha as the stable branch, so ReadTheDocs triggers a build
          git commit -a -m "Add .dummy-file"
          git checkout -b stable
          git push -f origin stable

