@@ -15,61 +15,13 @@ runs:
1515 using : composite
1616 steps :
1717
18- - name : Ensure Homebrew is available (macOS)
18+ - name : Set up user-local Homebrew (macOS)
1919 if : ${{ runner.os == 'macOS' }}
2020 run : |
21- find_brew() {
22- local candidate
23- if candidate="$(command -v brew)" && [ -x "$candidate" ]; then
24- echo "$candidate"
25- return 0
26- fi
27- for candidate in /opt/homebrew/bin/brew /usr/local/bin/brew; do
28- if [ -x "$candidate" ]; then
29- echo "$candidate"
30- return 0
31- fi
32- done
33- return 1
34- }
35-
36- brew_is_writable() {
37- prefix="$("$brew" --prefix)" || return 1
38- repository="$("$brew" --repository)" || return 1
39- for directory in "$prefix" "$repository" \
40- "$prefix/Cellar" "$prefix/Frameworks" "$prefix/bin" \
41- "$prefix/etc" "$prefix/etc/bash_completion.d" \
42- "$prefix/include" "$prefix/lib" "$prefix/lib/pkgconfig" \
43- "$prefix/opt" "$prefix/sbin" "$prefix/share" \
44- "$prefix/share/doc" "$prefix/share/man" \
45- "$prefix/share/man/man1" "$prefix/share/man/man3" \
46- "$prefix/share/man/man5" "$prefix/share/man/man7" \
47- "$prefix/share/zsh" "$prefix/share/zsh/site-functions" \
48- "$prefix/var/homebrew" "$prefix/var/homebrew/linked" \
49- "$prefix/var/homebrew/locks"; do
50- if [ -e "$directory" ] && [ ! -w "$directory" ]; then
51- echo "Homebrew directory is not writable: $directory" >&2
52- return 1
53- fi
54- done
55- }
56-
57- if ! brew="$(find_brew)" || ! brew_is_writable; then
58- echo "Installing or repairing Homebrew for $(id -un)."
59- installer="$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
60- NONINTERACTIVE=1 /bin/bash -c "$installer"
61- if ! brew="$(find_brew)"; then
62- echo "::error::Homebrew installer completed but brew was not found."
63- exit 1
64- fi
21+ prefix="$HOME/.homebrew"
22+ if [ ! -x "$prefix/bin/brew" ]; then
23+ git clone --depth=1 https://github.com/Homebrew/brew.git "$prefix"
6524 fi
66-
67- if ! brew_is_writable; then
68- echo "::error::Homebrew is still not writable after running its installer. Check runner sudo permissions and Homebrew ownership."
69- exit 1
70- fi
71-
72- prefix="$("$brew" --prefix)"
7325 printf '%s\n' "$prefix/bin" "$prefix/sbin" >> "$GITHUB_PATH"
7426 shell : bash
7527
0 commit comments