name: Update Homebrew Formula
on:
release:
types: [published]
jobs:
update-homebrew-formula:
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
- name: Extract version
id: extract-version
run: |
echo "tag-name=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT
echo "version=${GITHUB_REF#refs/tags/v}" >> $GITHUB_OUTPUT
- name: Build full application
run: |
# Build Rust backend
cargo build --release
# Build UI
cd ui
npm ci
npm run build
cd ..
# Package everything
mkdir -p dist/oli
cp target/release/oli-server dist/oli/
cp -r ui/dist dist/oli/ui
# Create startup script
cat > dist/oli/oli << 'EOF'
#!/bin/bash
# Find the directory where this script is located
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
# Start the server in the background
"$SCRIPT_DIR/oli-server" &
SERVER_PID=$!
# Start the UI
cd "$SCRIPT_DIR"
node --import tsx ui/cli.js "$@"
# Kill the server when the UI exits
kill $SERVER_PID
EOF
chmod +x dist/oli/oli
# Create tarball
tar -czf dist/oli-${{ steps.extract-version.outputs.version }}.tar.gz -C dist oli
- name: Calculate SHA256
id: calculate-sha
run: |
echo "sha=$(shasum -a 256 dist/oli-${{ steps.extract-version.outputs.version }}.tar.gz | awk '{print $1}')" >> $GITHUB_OUTPUT
- name: Update Homebrew Formula
uses: mislav/bump-homebrew-formula-action@v3
with:
formula-name: oli
formula-path: Formula/oli.rb
homebrew-tap: amrit110/homebrew-oli
download-url: https://github.com/amrit110/oli/archive/refs/tags/${{ steps.extract-version.outputs.tag-name }}.tar.gz
commit-message: |
oli ${{ steps.extract-version.outputs.version }}
Created by https://github.com/amrit110/oli/actions/runs/${{ github.run_id }}
env:
COMMITTER_TOKEN: ${{ secrets.HOMEBREW_TOKEN }}