mirror of
https://github.com/get-aurora-dev/common.git
synced 2026-11-03 21:49:43 -09:00
* chore(deps): update actions/checkout action to v7.0.1 * update version number --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: inffy <10782843+inffy@users.noreply.github.com>
66 lines
2.3 KiB
YAML
66 lines
2.3 KiB
YAML
name: Validate Brewfiles
|
|
permissions:
|
|
contents: read
|
|
|
|
on:
|
|
pull_request:
|
|
paths:
|
|
- "system_files/shared/usr/share/ublue-os/homebrew/**"
|
|
jobs:
|
|
validate:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.1
|
|
|
|
- name: Set up Homebrew
|
|
uses: Homebrew/actions/setup-homebrew@main
|
|
|
|
- name: Validate Brewfiles
|
|
shell: bash
|
|
run: |
|
|
echo "Validating Brewfiles in homebrew directory..."
|
|
|
|
STATUS_FILE=$(mktemp)
|
|
echo "PASS" > "$STATUS_FILE"
|
|
|
|
while IFS= read -r -d '' brewfile ; do
|
|
echo "::group:: ===$(basename $brewfile)==="
|
|
|
|
grep -E -e "^tap" "$brewfile" > taps.Brewfile || true
|
|
echo "Syncing taps..."
|
|
brew bundle --file=./taps.Brewfile > /dev/null 2>&1 || true
|
|
|
|
# Extract combined list for parallel check
|
|
FORMULAS=$(grep -E '^\s*brew\s+["'\'']' "$brewfile" | sed -E 's/^\s*brew\s+["'\'']([^"'\'']+)["'\''].*/formula \1/' || true)
|
|
CASKS=$(grep -E '^\s*cask\s+["'\'']' "$brewfile" | sed -E 's/^\s*cask\s+["'\'']([^"'\'']+)["'\''].*/cask \1/' || true)
|
|
|
|
ENTRIES=$(printf "%s\n%s" "$FORMULAS" "$CASKS" | grep -v '^\s*$' || true)
|
|
|
|
if [ -n "$ENTRIES" ]; then
|
|
echo "$ENTRIES" | xargs -P 8 -I {} bash -c '
|
|
TYPE=$(echo "{}" | cut -d" " -f1)
|
|
NAME=$(echo "{}" | cut -d" " -f2)
|
|
if ! brew info --$TYPE "$NAME" &> /dev/null; then
|
|
echo "✗ $TYPE \"$NAME\" is invalid or missing tap"
|
|
echo "FAIL" >> "'"$STATUS_FILE"'"
|
|
else
|
|
echo "✓ $TYPE \"$NAME\" is valid"
|
|
fi
|
|
'
|
|
else
|
|
echo "No formulas or casks found."
|
|
fi
|
|
|
|
echo "::endgroup::"
|
|
done < <(find "system_files/shared/usr/share/ublue-os/homebrew" -iname '*\.Brewfile*' -print0)
|
|
|
|
rm -f taps.Brewfile
|
|
|
|
if grep -q "FAIL" "$STATUS_FILE"; then
|
|
echo "Validation complete. Some Brewfiles FAILED."
|
|
exit 1
|
|
else
|
|
echo "Validation complete. All Brewfiles PASSED."
|
|
exit 0
|
|
fi
|