# Simplified Commit Queue
#
# (Force) push to "queue-main-$USER" a potential change, and
# this job will push it main if it passes pre-commit and tests,
# which will run in parallel. The push may fail if the commit
# cannot be pushed cleanly because it needs to be rebased, which
# will happen especially if another developer pushes a change at
# roughly the same time.

name: Main Branch Commit Queue
on:
  push:
    branches:
      - "queue-main-*"

permissions: read-all

jobs:
  formatting:
    uses: ./.github/workflows/formatting.yml
    permissions:
      contents: write
    with:
      auto_fix: true

  go-test:
    needs: [formatting]
    uses: ./.github/workflows/go_test.yml
    permissions: read-all

  ui-test:
    needs: [formatting]
    uses: ./.github/workflows/webui_test.yml
    permissions: read-all

  push-to-main:
    runs-on: ubuntu-latest
    needs: [go-test, ui-test, formatting]
    permissions:
      contents: write
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - name: Push to main
        run: |
          git config --global user.name "GitHub Actions Bot"
          git config --global user.email "actions@github.com"
          
          # Use the formatted commit SHA if available, otherwise use HEAD
          COMMIT_TO_PUSH="HEAD"
          if [[ "${{ needs.formatting.outputs.commit_sha }}" != "" ]]; then
            echo "Using formatted commit: ${{ needs.formatting.outputs.commit_sha }}"
            COMMIT_TO_PUSH="${{ needs.formatting.outputs.commit_sha }}"
          fi
          
          git push https://${GITHUB_ACTOR}:${GITHUB_TOKEN}@github.com/boldsoftware/sketch.git "${COMMIT_TO_PUSH}":main
        env:
          GITHUB_TOKEN: ${{ github.token }}
