Skip to content

Commit e1dd88a

Browse files
optimise API dumps for changed modules and only run for android and jvm
1 parent d14f3b6 commit e1dd88a

1 file changed

Lines changed: 41 additions & 16 deletions

File tree

.github/workflows/pull_request_target.yml

Lines changed: 41 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ jobs:
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

Comments
 (0)