Update Homebrew Formula #3
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: Update Homebrew Formula | |
on: | |
release: | |
types: [published] | |
workflow_dispatch: | |
inputs: | |
tag: | |
description: "Release tag to update the formula (e.g., 'v2.0.12')" | |
required: false | |
default: "2.0.11" | |
jobs: | |
update-formula: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Extract version from input or release | |
id: extract_version | |
run: | | |
# Use the provided tag if triggered manually, otherwise use the release tag | |
if [ "${{ github.event.inputs.tag }}" != "" ]; then | |
VERSION="${{ github.event.inputs.tag }}" | |
else | |
VERSION="${GITHUB_REF#refs/tags/}" | |
fi | |
# Normalize by removing a leading 'v' if present | |
VERSION="${VERSION#v}" | |
echo "version=$VERSION" >> $GITHUB_OUTPUT | |
- name: Find jar asset download URL | |
id: find_asset | |
run: | | |
# Get release data from GitHub API | |
release_data=$(curl -sL -H "Accept: application/vnd.github+json" \ | |
"https://api.github.com/repos/skidfuscatordev/skidfuscator-java-obfuscator/releases/tags/${{ steps.extract_version.outputs.version }}") | |
# Find the asset named 'skidfuscator.jar' (adjust if needed) | |
asset_url=$(echo "$release_data" | jq -r '.assets[] | select(.name == "skidfuscator.jar") | .browser_download_url') | |
if [ -z "$asset_url" ]; then | |
echo "Could not find skidfuscator.jar in the release." | |
exit 1 | |
fi | |
echo "asset_url=$asset_url" >> $GITHUB_OUTPUT | |
- name: Download jar | |
run: | | |
curl -L ${{ steps.find_asset.outputs.asset_url }} -o skidfuscator.jar | |
- name: Compute SHA256 | |
id: sha256 | |
run: | | |
SHA256=$(shasum -a 256 skidfuscator.jar | awk '{print $1}') | |
echo "sha256=$SHA256" >> $GITHUB_OUTPUT | |
- name: Checkout tap repository | |
uses: actions/checkout@v3 | |
with: | |
repository: skidfuscatordev/homebrew-skidfuscator | |
token: ${{ secrets.PERSONAL_ACCESS_TOKEN }} | |
# Use a branch name where the formula resides, usually 'main' | |
ref: master | |
- name: Update formula | |
run: | | |
FORMULA_PATH="Formula/skidfuscator.rb" | |
NEW_VERSION="${{ steps.extract_version.outputs.version }}" | |
NEW_URL="${{ steps.find_asset.outputs.asset_url }}" | |
NEW_SHA256="${{ steps.sha256.outputs.sha256 }}" | |
# Update url line | |
sed -i.bak "s|^ url \".*\"| url \"${NEW_URL}\"|" $FORMULA_PATH | |
# Update sha256 line | |
sed -i.bak "s|^ sha256 \".*\"| sha256 \"${NEW_SHA256}\"|" $FORMULA_PATH | |
# Update version line | |
sed -i.bak "s|^ version \".*\"| version \"${NEW_VERSION}\"|" $FORMULA_PATH | |
# Clean backup | |
rm $FORMULA_PATH.bak | |
echo "Updated formula with version=${NEW_VERSION}, url=${NEW_URL}, sha256=${NEW_SHA256}" | |
cat $FORMULA_PATH | |
- name: Commit and push changes | |
run: | | |
git config user.name "github-actions" | |
git config user.email "[email protected]" | |
git add Formula/skidfuscator.rb | |
git commit -m "Update Skidfuscator formula to version ${{ steps.extract_version.outputs.version }}" | |
git push origin HEAD:main | |
env: | |
GITHUB_TOKEN: ${{ secrets.PERSONAL_ACCESS_TOKEN }} |