# Workflow to cherry-pick changes from main to release branch.

name: auto-merge

on:
  push:
    branches: [ main ]

jobs:
  pick-test-push:
    strategy:
      fail-fast: false

    # The type of runner that the job will run on
    runs-on: ubuntu-latest

    permissions:
      contents: write

    steps:
    # Checkout
      - uses: actions/checkout@v2
        with:
          fetch-depth: 0
          ref: 2.0.3-release
  
      - name: merge commits from main to release branch
        run: |
          # Cherry pick new changes from main, except for version bumps.
          # A commit is a version bump IFF it touches third_party/prebuilt/repo
          DONT_PICK=$(cat <<EOF
          5c073ba9c1283190467937b4456be9174b9be86c
          EOF
          )
          git config --global user.email "kotlin-symbol-processing@google.com"
          git config --global user.name "KSP Auto Pick"
          MERGE_BASE=$(git merge-base HEAD origin/main)
          CANDIDATES=$(git log --pretty=%H $MERGE_BASE..origin/main)
          PICKED=$(git log $MERGE_BASE..HEAD | sed -n "s/^[ ]*(cherry picked from commit \([a-z0-9]*\))$/\1/p")
          VERSION_BUMPS=$(git log $MERGE_BASE..origin/main --pretty=%H --grep UPDATE_KOTLIN_VERSION)
          TO_PICK=$(grep -Fxv -f <(echo "$PICKED"; echo "$VERSION_BUMPS"; echo "$DONT_PICK") <(echo "$CANDIDATES") | awk '{a[i++]=$0} END {for (j=i-1; j>=0;) print a[j--] }')
          echo Picking $TO_PICK
          if [ -n "$TO_PICK" ]; then git cherry-pick -x $TO_PICK; fi
  
      - name: Setup Java 17
        uses: actions/setup-java@v1.4.3
        with:
          java-version: '17'
          java-package: jdk
          architecture: x64
  
      # Build cache
      - name: Cache Gradle Cache
        uses: actions/cache@v4
        with:
          path: ~/.gradle/caches
          key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle.kts') }}-${{ hashFiles('**/gradle.properties') }}
          # An ordered list of keys to use for restoring the cache if no cache hit occurred for key
          restore-keys: |
            ${{ runner.os }}-gradle-
      - name: Cache gradle wrapper
        uses: actions/cache@v4
        with:
          path: ~/.gradle/wrapper
          key: ${{ runner.os }}-gradle-wrapper-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties') }}
  
      # Check API compatibility
      - name: API compatibility check
        run: ./gradlew :api:checkApi
  
      # Run ksp generated tests
      - name: test
        run: ./gradlew --stacktrace --info check

      - name: push to release branch
        if: success()
        run: git fetch && git rebase && git push origin

      - name: Upload test results
        if: always()
        uses: actions/upload-artifact@v4
        with:
          name: test-reports
          path: |
            compiler-plugin/build/reports
            integration-tests/build/reports
            gradle-plugin/build/reports
            common-util/build/reports
            kotlin-analysis-api/build/reports
