@@ -41,12 +41,43 @@ jobs:
4141 cache-targets : true
4242 cache-on-failure : true
4343
44+ - name : Set Homebrew prefix based on architecture
45+ id : brew-prefix
46+ run : |
47+ if [[ $(uname -m) == "arm64" ]]; then
48+ echo "prefix=/opt/homebrew" >> $GITHUB_OUTPUT
49+ else
50+ echo "prefix=/usr/local" >> $GITHUB_OUTPUT
51+ fi
52+
53+ - name : Get Homebrew formula versions
54+ id : brew-versions
55+ run : |
56+ echo "xcodegen=$(brew info --json=v2 xcodegen | jq -r '.formulae[0].versions.stable')" >> $GITHUB_OUTPUT
57+ echo "libimobiledevice=$(brew info --json=v2 libimobiledevice | jq -r '.formulae[0].versions.stable')" >> $GITHUB_OUTPUT
58+
59+ - name : Cache Homebrew packages
60+ id : cache-homebrew
61+ uses : actions/cache@v5
62+ with :
63+ path : |
64+ ${{ steps.brew-prefix.outputs.prefix }}/Cellar/{xcodegen,libimobiledevice,libplist,libusbmuxd}
65+ ${{ steps.brew-prefix.outputs.prefix }}/opt/{xcodegen,libimobiledevice,libplist,libusbmuxd}
66+ key : ${{ runner.os }}-${{ runner.arch }}-brew-${{ steps.brew-versions.outputs.xcodegen }}-${{ steps.brew-versions.outputs.libimobiledevice }}
67+ restore-keys : |
68+ ${{ runner.os }}-${{ runner.arch }}-brew-
69+
4470 - name : Install Tauri iOS dependencies
71+ if : steps.cache-homebrew.outputs.cache-hit != 'true'
4572 run : |
4673 brew install xcodegen libimobiledevice
4774 # Ensure binaries are linked and in PATH for Tauri
4875 brew link --overwrite xcodegen libimobiledevice 2>/dev/null || true
4976
77+ - name : Link cached Homebrew packages
78+ if : steps.cache-homebrew.outputs.cache-hit == 'true'
79+ run : brew link --overwrite xcodegen libimobiledevice 2>/dev/null || true
80+
5081 - name : Install npm dependencies
5182 run : npm ci
5283
0 commit comments