1515 contents : write
1616 steps :
1717 - uses : actions/checkout@v6
18+ with :
19+ fetch-depth : 0
1820
1921 - name : Set up JDK
2022 uses : actions/setup-java@v5
@@ -23,25 +25,48 @@ jobs:
2325 java-version : ' 17'
2426 cache : gradle
2527
26- - name : Cocoapods cache
27- uses : actions/cache@v5
28- with :
29- path : |
30- ~/.cocoapods
31- ~/Library/Caches/CocoaPods
32- */build/cocoapods
33- */build/classes
34- key : cocoapods-cache-v2
35-
36- - uses : maxim-lobanov/setup-xcode@v1
37- with :
38- xcode-version : ' 26.2.0'
39-
4028 - name : Format Kotlin
4129 run : ./gradlew formatKotlin
4230
43- - name : Api File Update
44- run : ./gradlew apiDump
31+ - name : Update API files for changed modules
32+ env :
33+ BASE_SHA : ${{ github.event.pull_request.base.sha }}
34+ HEAD_SHA : ${{ github.event.pull_request.head.sha }}
35+ run : |
36+ changed_modules=""
37+ dump_all=false
38+
39+ while IFS= read -r changed_file; do
40+ module="${changed_file%%/*}"
41+ if [ -d "$module/api" ]; then
42+ case " $changed_modules " in
43+ *" $module "*) ;;
44+ *) changed_modules="$changed_modules $module" ;;
45+ esac
46+ else
47+ dump_all=true
48+ fi
49+ done < <(git diff --name-only "$BASE_SHA...$HEAD_SHA")
50+
51+ if [ "$dump_all" = true ] || [ -z "$changed_modules" ]; then
52+ changed_modules=""
53+ for api_directory in */api; do
54+ changed_modules="$changed_modules ${api_directory%/api}"
55+ done
56+ fi
57+
58+ api_dump_tasks=""
59+ for module in $changed_modules; do
60+ if [ -d "$module/api/android" ] || find "$module/api" -maxdepth 1 -name '*.api' -print -quit | grep -q .; then
61+ api_dump_tasks="$api_dump_tasks :${module}:androidApiDump"
62+ fi
63+ if [ -d "$module/api/jvm" ]; then
64+ api_dump_tasks="$api_dump_tasks :${module}:jvmApiDump"
65+ fi
66+ done
67+
68+ echo "Running API dump tasks:$api_dump_tasks"
69+ ./gradlew $api_dump_tasks
4570
4671 - run : git status
4772
0 commit comments