Skip to content

Commit ad7a3c5

Browse files
authored
Replace Homebrew bump action with direct formula update (#184)
* Replace Homebrew bump action with direct formula update * Allow manual formula bump via workflow_dispatch
1 parent 8580233 commit ad7a3c5

1 file changed

Lines changed: 42 additions & 12 deletions

File tree

.github/workflows/homebrew.yml

Lines changed: 42 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,25 +3,55 @@ name: Update Homebrew Formula
33
on:
44
release:
55
types: [published]
6+
workflow_dispatch:
7+
inputs:
8+
tag-name:
9+
description: Release tag to bump the formula to (e.g. v2.8.0)
10+
required: true
11+
type: string
612

713
permissions: read-all
814

15+
# mislav/bump-homebrew-formula-action rejects the HTTP 303 redirects GitHub
16+
# now serves for tarball URLs (mislav/bump-homebrew-formula-action#340), so
17+
# the formula is bumped directly via the tap's contents API instead.
918
jobs:
1019
homebrew:
1120
name: Bump Homebrew formula
1221
runs-on: ubuntu-latest
1322
if: ${{ !github.event.release.prerelease }}
1423
steps:
15-
- uses: mislav/bump-homebrew-formula-action@56a283fa15557e9abaa4bdb63b8212abc68e655c # v3
16-
with:
17-
formula-name: git-gtr
18-
formula-path: Formula/git-gtr.rb
19-
homebrew-tap: coderabbitai/homebrew-tap
20-
tag-name: ${{ github.event.release.tag_name }}
21-
create-pullrequest: false
22-
commit-message: |
23-
{{formulaName}} {{version}}
24-
25-
Automated update from https://github.com/coderabbitai/git-worktree-runner
24+
- name: Bump Formula/git-gtr.rb in coderabbitai/homebrew-tap
2625
env:
27-
COMMITTER_TOKEN: ${{ secrets.HOMEBREW_TAP_TOKEN }}
26+
GH_TOKEN: ${{ secrets.HOMEBREW_TAP_TOKEN }}
27+
TAG_NAME: ${{ github.event.release.tag_name || inputs.tag-name }}
28+
run: |
29+
set -euo pipefail
30+
31+
version="${TAG_NAME#v}"
32+
url="https://github.com/coderabbitai/git-worktree-runner/archive/refs/tags/${TAG_NAME}.tar.gz"
33+
34+
curl -fsSL --retry 3 "$url" -o release.tar.gz
35+
sha256=$(sha256sum release.tar.gz | awk '{print $1}')
36+
37+
gh api repos/coderabbitai/homebrew-tap/contents/Formula/git-gtr.rb > formula.json
38+
blob_sha=$(jq -r '.sha' formula.json)
39+
jq -r '.content' formula.json | base64 -d > git-gtr.rb
40+
41+
if grep -qF " url \"${url}\"" git-gtr.rb; then
42+
echo "Formula already at ${TAG_NAME}; nothing to do."
43+
exit 0
44+
fi
45+
46+
sed -i "s|^ url \".*\"$| url \"${url}\"|" git-gtr.rb
47+
sed -i "s|^ sha256 \".*\"$| sha256 \"${sha256}\"|" git-gtr.rb
48+
49+
grep -qF " url \"${url}\"" git-gtr.rb
50+
grep -qF " sha256 \"${sha256}\"" git-gtr.rb
51+
52+
message="$(printf 'git-gtr %s\n\nAutomated update from https://github.com/coderabbitai/git-worktree-runner' "$version")"
53+
54+
gh api --method PUT repos/coderabbitai/homebrew-tap/contents/Formula/git-gtr.rb \
55+
-f message="$message" \
56+
-f content="$(base64 -w0 git-gtr.rb)" \
57+
-f sha="$blob_sha"

0 commit comments

Comments
 (0)