69 lines
2.2 KiB
YAML
69 lines
2.2 KiB
YAML
name: Publish Homebrew Tap
|
|
|
|
on:
|
|
release:
|
|
types: [published]
|
|
workflow_dispatch:
|
|
|
|
jobs:
|
|
publish-homebrew:
|
|
runs-on: local
|
|
needs: []
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Wait for release asset
|
|
run: |
|
|
TAG="${GITHUB_REF#refs/tags/}"
|
|
VERSION="${TAG#v}"
|
|
ASSET_URL="https://github.com/n0va-bot/kewt/releases/download/${TAG}/kewt"
|
|
|
|
# Wait for the GitHub release asset to be available
|
|
for i in $(seq 1 12); do
|
|
if curl -sLf -o /dev/null "$ASSET_URL" 2>/dev/null; then
|
|
echo "Asset available at $ASSET_URL"
|
|
break
|
|
fi
|
|
echo "Waiting for release asset... (attempt $i)"
|
|
sleep 10
|
|
done
|
|
|
|
- name: Render Formula
|
|
run: |
|
|
TAG="${GITHUB_REF#refs/tags/}"
|
|
VERSION="${TAG#v}"
|
|
ASSET_URL="https://github.com/n0va-bot/kewt/releases/download/${TAG}/kewt"
|
|
|
|
curl -sL -o kewt-binary "$ASSET_URL"
|
|
CHECKSUM=$(sha256sum kewt-binary | awk '{print $1}')
|
|
rm -f kewt-binary
|
|
|
|
mkdir -p brew-work/Formula
|
|
sed -e "s/VERSION_PLACEHOLDER/${VERSION}/g" \
|
|
-e "s/SHA256SUM_PLACEHOLDER/${CHECKSUM}/g" \
|
|
packaging/homebrew/kewt.rb.template > brew-work/Formula/kewt.rb
|
|
|
|
echo "Generated Formula:"
|
|
cat brew-work/Formula/kewt.rb
|
|
|
|
- name: Push to GitHub homebrew-tap
|
|
run: |
|
|
TAG="${GITHUB_REF#refs/tags/}"
|
|
cd brew-work
|
|
|
|
git init
|
|
git remote add origin https://x-access-token:${{ secrets.GH_RELEASE_TOKEN }}@github.com/n0va-bot/homebrew-tap.git
|
|
git fetch origin main || git checkout --orphan main
|
|
git checkout main 2>/dev/null || git checkout --orphan main
|
|
|
|
# Overwrite with the rendered Formula
|
|
mkdir -p Formula
|
|
cp Formula/kewt.rb Formula/kewt.rb
|
|
|
|
git add Formula/kewt.rb
|
|
git config user.name "${{ github.actor }}"
|
|
git config user.email "${{ github.actor }}@users.noreply.github.com"
|
|
git commit -m "Update kewt to ${TAG}" || echo "No changes to commit"
|
|
git push origin main
|