name: Update Homebrew Formula
on:
release:
types: [published]
jobs:
update-formula:
name: Update Homebrew tap
runs-on: ubuntu-latest
steps:
- name: Checkout tap
uses: actions/checkout@v4
with:
repository: connectwithprakash/homebrew-tap
token: ${{ secrets.HOMEBREW_TAP_TOKEN }}
- name: Download checksums
env:
GH_TOKEN: ${{ github.token }}
run: |
VERSION="${GITHUB_REF_NAME#v}"
TAG="${GITHUB_REF_NAME}"
BASE_URL="https://github.com/connectwithprakash/diskard/releases/download/${TAG}"
# Download all sha256 files
for target in aarch64-apple-darwin x86_64-apple-darwin aarch64-unknown-linux-gnu x86_64-unknown-linux-gnu; do
gh release download "${TAG}" \
--repo connectwithprakash/diskard \
--pattern "diskard-${target}.tar.gz.sha256" \
--dir /tmp/sha
done
# Extract hashes
AARCH64_MACOS=$(awk '{print $1}' /tmp/sha/diskard-aarch64-apple-darwin.tar.gz.sha256)
X86_64_MACOS=$(awk '{print $1}' /tmp/sha/diskard-x86_64-apple-darwin.tar.gz.sha256)
AARCH64_LINUX=$(awk '{print $1}' /tmp/sha/diskard-aarch64-unknown-linux-gnu.tar.gz.sha256)
X86_64_LINUX=$(awk '{print $1}' /tmp/sha/diskard-x86_64-unknown-linux-gnu.tar.gz.sha256)
# Generate formula
cat > Formula/diskard.rb << FORMULA
class Diskard < Formula
desc "Developer-aware disk cleanup CLI"
homepage "https://github.com/connectwithprakash/diskard"
version "${VERSION}"
license any_of: ["MIT", "Apache-2.0"]
on_macos do
if Hardware::CPU.arm?
url "${BASE_URL}/diskard-aarch64-apple-darwin.tar.gz"
sha256 "${AARCH64_MACOS}"
else
url "${BASE_URL}/diskard-x86_64-apple-darwin.tar.gz"
sha256 "${X86_64_MACOS}"
end
end
on_linux do
if Hardware::CPU.arm?
url "${BASE_URL}/diskard-aarch64-unknown-linux-gnu.tar.gz"
sha256 "${AARCH64_LINUX}"
else
url "${BASE_URL}/diskard-x86_64-unknown-linux-gnu.tar.gz"
sha256 "${X86_64_LINUX}"
end
end
def install
bin.install "diskard"
end
test do
assert_match "diskard", shell_output("#{bin}/diskard --version")
end
end
FORMULA
# Fix indentation (heredoc adds leading spaces)
sed -i 's/^ //' Formula/diskard.rb
- name: Commit and push
run: |
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
git add Formula/diskard.rb
git commit -m "feat: update diskard to ${GITHUB_REF_NAME}"
git push