Skip to content

Commit b09c32e

Browse files
Add automatic cask updates to release workflow
1 parent a541717 commit b09c32e

File tree

1 file changed

+34
-0
lines changed

1 file changed

+34
-0
lines changed

.github/workflows/build-and-release.yml

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,3 +68,37 @@ jobs:
6868
asset_path: ./${{ env.FILE_NAME }}
6969
asset_name: ${{ env.FILE_NAME }}
7070
asset_content_type: application/gzip
71+
72+
- name: Update Homebrew Cask
73+
env:
74+
PERSONAL_ACCESS_TOKEN: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
75+
run: |
76+
# Configure Git
77+
git config --global user.name "GitHub Actions"
78+
git config --global user.email "[email protected]"
79+
80+
# Clone your tap repository
81+
git clone https://github.com/janekbaraniewski/homebrew-janekbaraniewski.git
82+
cd homebrew-janekbaraniewski
83+
84+
# Fetch the latest release data from GitHub API
85+
RELEASE_DATA=$(curl -s -H "Authorization: token $PERSONAL_ACCESS_TOKEN" "https://api.github.com/repos/janekbaraniewski/IPMenuBar/releases/latest")
86+
87+
# Extract the version (tag name), removing the leading 'v'
88+
APP_VERSION=$(echo $RELEASE_DATA | jq -r ".tag_name" | sed 's/^v//')
89+
90+
# Extract the tar.gz asset download URL
91+
RELEASE_URL=$(echo $RELEASE_DATA | jq -r '.assets[] | select(.name | endswith(".tar.gz")) | .browser_download_url')
92+
93+
# Get the SHA256 checksum of the release asset
94+
SHA256=$(curl -Ls $RELEASE_URL | shasum -a 256 | awk '{ print $1 }')
95+
96+
# Update the Cask file
97+
sed -i '' "s/version '.*'/version '$APP_VERSION'/" Casks/ipmenubar.rb
98+
sed -i '' "s|url '.*'|url '$RELEASE_URL'|" Casks/ipmenubar.rb
99+
sed -i '' "s/sha256 '.*'/sha256 '$SHA256'/" Casks/ipmenubar.rb
100+
101+
# Commit and push the changes
102+
git add Casks/ipmenubar.rb
103+
git commit -m "Update IPMenuBar to version $APP_VERSION"
104+
git push origin master

0 commit comments

Comments
 (0)