Skip to content

release: prepare v0.9.3 #5

release: prepare v0.9.3

release: prepare v0.9.3 #5

name: Update Homebrew Formula
on:
release:
types: [published]
workflow_dispatch:
inputs:
version:
description: 'Version to update (e.g., 0.9.3)'
required: true
type: string
permissions:
contents: read
jobs:
update-formula:
name: Update Homebrew Formula
runs-on: ubuntu-latest
steps:
- name: Get release information
id: release
run: |
# Handle both release event and manual dispatch
if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then
VERSION="${{ inputs.version }}"
TAG="v${VERSION}"
else
# Extract version from tag (remove 'v' prefix)
VERSION="${{ github.event.release.tag_name }}"
VERSION="${VERSION#v}"
TAG="${{ github.event.release.tag_name }}"
fi
echo "VERSION=$VERSION" >> $GITHUB_OUTPUT
echo "TAG=$TAG" >> $GITHUB_OUTPUT
echo "Updating formula to version: $VERSION (tag: $TAG)"
- name: Download release archives
run: |
VERSION="${{ steps.release.outputs.VERSION }}"
mkdir -p downloads
cd downloads
# Download all 4 platform archives
curl -sL "https://github.com/${{ github.repository }}/releases/download/v${VERSION}/arbor-${VERSION}-darwin_amd64.tar.gz" -o darwin_amd64.tar.gz
curl -sL "https://github.com/${{ github.repository }}/releases/download/v${VERSION}/arbor-${VERSION}-darwin_arm64.tar.gz" -o darwin_arm64.tar.gz
curl -sL "https://github.com/${{ github.repository }}/releases/download/v${VERSION}/arbor-${VERSION}-linux_amd64.tar.gz" -o linux_amd64.tar.gz
curl -sL "https://github.com/${{ github.repository }}/releases/download/v${VERSION}/arbor-${VERSION}-linux_arm64.tar.gz" -o linux_arm64.tar.gz
- name: Calculate SHA256 checksums
id: checksums
run: |
cd downloads
# Calculate SHA256 for each archive
DARWIN_AMD64_SHA=$(sha256sum darwin_amd64.tar.gz | awk '{print $1}')
DARWIN_ARM64_SHA=$(sha256sum darwin_arm64.tar.gz | awk '{print $1}')
LINUX_AMD64_SHA=$(sha256sum linux_amd64.tar.gz | awk '{print $1}')
LINUX_ARM64_SHA=$(sha256sum linux_arm64.tar.gz | awk '{print $1}')
echo "DARWIN_AMD64_SHA=$DARWIN_AMD64_SHA" >> $GITHUB_OUTPUT
echo "DARWIN_ARM64_SHA=$DARWIN_ARM64_SHA" >> $GITHUB_OUTPUT
echo "LINUX_AMD64_SHA=$LINUX_AMD64_SHA" >> $GITHUB_OUTPUT
echo "LINUX_ARM64_SHA=$LINUX_ARM64_SHA" >> $GITHUB_OUTPUT
echo "Checksums calculated:"
echo "darwin_amd64: $DARWIN_AMD64_SHA"
echo "darwin_arm64: $DARWIN_ARM64_SHA"
echo "linux_amd64: $LINUX_AMD64_SHA"
echo "linux_arm64: $LINUX_ARM64_SHA"
- name: Checkout homebrew-tap
uses: actions/checkout@v4
with:
repository: artisanexperiences/homebrew-tap
token: ${{ secrets.HOMEBREW_TAP_TOKEN }}
path: homebrew-tap
- name: Update formula
run: |
VERSION="${{ steps.release.outputs.VERSION }}"
cd homebrew-tap
# Create Formula directory if it doesn't exist
mkdir -p Formula
# Generate the formula file
cat > Formula/arbor.rb << 'FORMULA'
class Arbor < Formula

Check failure on line 89 in .github/workflows/update-homebrew.yml

View workflow run for this annotation

GitHub Actions / .github/workflows/update-homebrew.yml

Invalid workflow file

You have an error in your yaml syntax on line 89
desc "Git worktree manager for Laravel projects"
homepage "https://github.com/artisanexperiences/arbor"
version "VERSION_PLACEHOLDER"
license "MIT"
on_macos do
if Hardware::CPU.arm?
url "https://github.com/artisanexperiences/arbor/releases/download/vVERSION_PLACEHOLDER/arbor-VERSION_PLACEHOLDER-darwin_arm64.tar.gz"
sha256 "DARWIN_ARM64_SHA_PLACEHOLDER"
else
url "https://github.com/artisanexperiences/arbor/releases/download/vVERSION_PLACEHOLDER/arbor-VERSION_PLACEHOLDER-darwin_amd64.tar.gz"
sha256 "DARWIN_AMD64_SHA_PLACEHOLDER"
end
end
on_linux do
if Hardware::CPU.arm?
url "https://github.com/artisanexperiences/arbor/releases/download/vVERSION_PLACEHOLDER/arbor-VERSION_PLACEHOLDER-linux_arm64.tar.gz"
sha256 "LINUX_ARM64_SHA_PLACEHOLDER"
else
url "https://github.com/artisanexperiences/arbor/releases/download/vVERSION_PLACEHOLDER/arbor-VERSION_PLACEHOLDER-linux_amd64.tar.gz"
sha256 "LINUX_AMD64_SHA_PLACEHOLDER"
end
end
def install
bin.install "arbor-#{version}-darwin_arm64" => "arbor" if OS.mac? && Hardware::CPU.arm?
bin.install "arbor-#{version}-darwin_amd64" => "arbor" if OS.mac? && Hardware::CPU.intel?
bin.install "arbor-#{version}-linux_arm64" => "arbor" if OS.linux? && Hardware::CPU.arm?
bin.install "arbor-#{version}-linux_amd64" => "arbor" if OS.linux? && Hardware::CPU.intel?
end
test do
assert_match version.to_s, shell_output("#{bin}/arbor version")
end
end
FORMULA
# Replace placeholders
sed -i "s/VERSION_PLACEHOLDER/${VERSION}/g" Formula/arbor.rb
sed -i "s/DARWIN_AMD64_SHA_PLACEHOLDER/${{ steps.checksums.outputs.DARWIN_AMD64_SHA }}/g" Formula/arbor.rb
sed -i "s/DARWIN_ARM64_SHA_PLACEHOLDER/${{ steps.checksums.outputs.DARWIN_ARM64_SHA }}/g" Formula/arbor.rb
sed -i "s/LINUX_AMD64_SHA_PLACEHOLDER/${{ steps.checksums.outputs.LINUX_AMD64_SHA }}/g" Formula/arbor.rb
sed -i "s/LINUX_ARM64_SHA_PLACEHOLDER/${{ steps.checksums.outputs.LINUX_ARM64_SHA }}/g" Formula/arbor.rb
- name: Commit and push formula
run: |
VERSION="${{ steps.release.outputs.VERSION }}"
cd homebrew-tap
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
git add Formula/arbor.rb
git commit -m "Update arbor to ${VERSION}"
git push