brew bump #361
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: brew bump | |
on: | |
workflow_dispatch: | |
schedule: | |
# every day at 6am | |
- cron: "0 6 * * *" | |
jobs: | |
get-formulae-and-casks: | |
name: Get formulae and casks | |
runs-on: ubuntu-latest | |
outputs: | |
matrix: ${{ steps.setmatrix.outputs.matrix }} | |
steps: | |
- uses: actions/checkout@v4 | |
# https://stackoverflow.com/a/32354503/18839600 | |
# first, get all formulae through `ls` and convert them into a JSON array | |
# then, map the json array to {name: <formula-name>[:-3], type: formula} | |
# [:-3] is to remove the .rb extension | |
- name: Get formulae | |
run: | | |
ls | jq -R -s 'split("\n")[:-1]' | jq 'map({name: .[:-3], type: "formula"})' > ../formulae.json | |
working-directory: Formula | |
# same as above, but for casks | |
- name: Get casks | |
run: | | |
ls | jq -R -s 'split("\n")[:-1]' | jq 'map({name: .[:-3], type: "cask"})' > ../casks.json | |
working-directory: Casks | |
# merge the two json arrays into one | |
- name: Output matrix | |
run: | | |
echo matrix="$(jq -s -c '.[0] + .[1]' formulae.json casks.json)" >> $GITHUB_OUTPUT | |
id: setmatrix | |
bump-versions: | |
needs: get-formulae-and-casks | |
strategy: | |
fail-fast: false | |
matrix: | |
include: ${{ fromJson(needs.get-formulae-and-casks.outputs.matrix) }} | |
name: Bump ${{ matrix.name }} | |
runs-on: macos-latest | |
steps: | |
- run: brew tap pavelzw/pavelzw | |
- name: brew livecheck ${{ matrix.name }} | |
run: | | |
set -euxo pipefail | |
brew developer on | |
brew livecheck pavelzw/pavelzw/${{ matrix.name }} --json | jq '.[0].version.outdated' > outdated | |
echo outdated="$(cat outdated)" >> $GITHUB_OUTPUT | |
brew livecheck pavelzw/pavelzw/${{ matrix.name }} --json | jq '.[0].version.latest' > new-version | |
echo new-version="$(cat new-version)" >> $GITHUB_OUTPUT | |
id: livecheck | |
shell: bash -euxo pipefail {0} | |
- name: Set up git | |
if: steps.livecheck.outputs.outdated == 'true' | |
run: | | |
git config --global user.email "126091039+pavelzw-bot@users.noreply.github.com" | |
git config --global user.name "pavelzw-bot" | |
- name: brew bump-${{ matrix.type }}-pr ${{ matrix.name }} | |
if: steps.livecheck.outputs.outdated == 'true' | |
run: >- | |
brew bump-${{ matrix.type }}-pr | |
pavelzw/pavelzw/${{ matrix.name }} | |
--version=${{ steps.livecheck.outputs.new-version }} | |
--no-browse | |
env: | |
HOMEBREW_GITHUB_API_TOKEN: ${{ secrets.HOMEBREW_GITHUB_API_TOKEN }} |