Skip to content

Update Homebrew Formula #7

Update Homebrew Formula

Update Homebrew Formula #7

Workflow file for this run

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: List Files
run: ls -R
- name: Create Formula if Missing
run: |
FORMULA_PATH="Formula/skidfuscator.rb"
mkdir -p "$(dirname $FORMULA_PATH)"
if [[ ! -f "$FORMULA_PATH" ]]; then
echo "Creating formula file..."
cat <<EOF > "$FORMULA_PATH"
class Skidfuscator < Formula
desc "A JVM-based obfuscation suite designed for Java and Android bytecode"
homepage "https://github.com/skidfuscatordev/skidfuscator-java-obfuscator"
url "PLACEHOLDER"
sha256 "PLACEHOLDER"
version "PLACEHOLDER"
license "MIT"
def install
libexec.install Dir["*.jar"]
jar_name = Dir["#{libexec}/*.jar"].first
(bin/"skidfuscator").write <<~EOS
#!/usr/bin/env bash
exec java -jar "#{jar_name}" "$@"
EOS
(bin/"skidfuscator").chmod 0755
end
test do
output = shell_output("#{bin}/skidfuscator --help", 0)
assert_match "Usage", output
end
end
EOF
fi
- name: Show Formula Contents
run: cat ./Formula/skidfuscator.rb
- 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: Show updated formula
run: cat ./Formula/skidfuscator.rb
- name: Commit and push changes
run: |
if [[ -n "$(git status --porcelain)" ]]; then
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:master
else
echo "No changes to commit"
fi
env:
GITHUB_TOKEN: ${{ secrets.PERSONAL_ACCESS_TOKEN }}