name: Sync Dev After Main Release

on:
  release:
    types: [published]

jobs:
  sync-dev:
    if: ${{ !github.event.release.prerelease && github.event.release.target_commitish == 'main' && startsWith(github.event.release.tag_name, 'v') && !contains(github.event.release.tag_name, '-') }}
    runs-on: ubuntu-latest

    permissions:
      contents: write

    steps:
      - name: Checkout
        uses: actions/checkout@v4
        with:
          fetch-depth: 0
          # Always use built-in workflow token so PAT rotation never breaks sync jobs.
          token: ${{ github.token }}

      - name: Configure Git
        run: |
          git config user.name "github-actions[bot]"
          git config user.email "github-actions[bot]@users.noreply.github.com"

      - name: Sync dev with main
        run: |
          git fetch origin main dev
          git checkout dev

          # Attempt merge, handle version conflicts by taking main's versions
          if ! git merge origin/main --no-edit -m "chore(sync): merge main into dev after release [skip ci]"; then
            echo "Merge conflicts detected, resolving version files..."

            # For version files, take main's version (new stable base)
            for file in VERSION package.json installers/install.sh installers/install.ps1 CHANGELOG.md; do
              if git diff --name-only --diff-filter=U | grep -q "^${file}$"; then
                git checkout --theirs "$file"
                git add "$file"
              fi
            done

            # Complete the merge
            git commit --no-edit
          fi

          git push origin dev
