name: Release Staging

on:
  pull_request:
    types: [ closed ]
  workflow_dispatch:
    inputs:
      version:
        description: 'Selenium version to release'
        required: true

env:
  GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

jobs:
  github-release:
    if: >
      (github.event.pull_request.merged == true &&
      github.repository_owner == 'seleniumhq' &&
      startsWith(github.event.pull_request.head.ref, 'release-preparation-')) ||
      (github.event_name == 'workflow_dispatch' &&
      github.event.inputs.version != '' &&
      github.repository_owner == 'seleniumhq')
    runs-on: ubuntu-latest
    permissions: write-all
    outputs:
      version: ${{ env.VERSION }}
    steps:
      - name: Checkout repo
        uses: actions/checkout@v4
        with:
          fetch-depth: 0
      - name: Extract version from branch name
        if: github.event.pull_request.merged == true
        run: |
          TEMP_BRANCH_NAME=${{ github.event.pull_request.head.ref }}
          VERSION=$(echo $TEMP_BRANCH_NAME | grep -oE '[0-9]+\.[0-9]+\.[0-9]+')
          echo "VERSION=$VERSION" >> $GITHUB_ENV
      - name: Extract version from workflow input
        if: github.event_name == 'workflow_dispatch'
        run: |
          VERSION=${{ inputs.version }}
          echo "VERSION=$VERSION" >> $GITHUB_ENV
      - name: Prep git
        run: |
          git config --local user.email "selenium-ci@users.noreply.github.com"
          git config --local user.name "Selenium CI Bot"
      - name: Setup Java
        uses: actions/setup-java@v3
        with:
          java-version: 17
          distribution: 'temurin'
      - name: Setup curl for Ubuntu
        run: sudo apt-get update && sudo apt-get install -y libcurl4-openssl-dev
      - name: Delete nightly tag
        run: |
          if git rev-parse --verify refs/tags/nightly >/dev/null 2>&1; then
            echo "Deleting nightly tag"
            git push origin --delete refs/tags/nightly
          else
            echo "No nightly tag found - nothing to delete"
          fi
      - name: Build and Stage Packages
        run: ./go all:package[--config=release]
      - name: Generate Draft Release
        uses: ncipollo/release-action@v1
        with:
          artifacts: "build/dist/*.*"
          bodyFile: "scripts/github-actions/release_header.md"
          draft: true
          generateReleaseNotes: true
          name: "Selenium ${{ env.VERSION }}"
          prerelease: false
          skipIfReleaseExists: true
          tag: "selenium-${{ env.VERSION }}"
          commit: "${{ github.sha }}"

  update-documentation:
    needs: github-release
    uses: ./.github/workflows/update-documentation.yml
    with:
      version: ${{ needs.github-release.outputs.version }}
      sha: ${{ github.sha }}
