|
92 | 92 | dist/quoteforge-*.zip.sha256 |
93 | 93 | generate_release_notes: true |
94 | 94 | fail_on_unmatched_files: false |
| 95 | + |
| 96 | + bump-homebrew: |
| 97 | + needs: release |
| 98 | + runs-on: ubuntu-latest |
| 99 | + steps: |
| 100 | + - uses: actions/checkout@v4 |
| 101 | + |
| 102 | + - name: Resolve version |
| 103 | + id: meta |
| 104 | + env: |
| 105 | + INPUT_TAG: ${{ github.event.inputs.tag }} |
| 106 | + REF_TAG: ${{ github.ref_name }} |
| 107 | + run: | |
| 108 | + tag="${INPUT_TAG:-$REF_TAG}" |
| 109 | + version="${tag#v}" |
| 110 | + echo "tag=$tag" >> "$GITHUB_OUTPUT" |
| 111 | + echo "version=$version" >> "$GITHUB_OUTPUT" |
| 112 | +
|
| 113 | + - name: Download sha256 files from release |
| 114 | + id: sha |
| 115 | + env: |
| 116 | + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} |
| 117 | + TAG: ${{ steps.meta.outputs.tag }} |
| 118 | + run: | |
| 119 | + set -e |
| 120 | + tmp=$(mktemp -d) |
| 121 | + for triple in aarch64-apple-darwin x86_64-apple-darwin aarch64-unknown-linux-gnu x86_64-unknown-linux-gnu; do |
| 122 | + gh release download "$TAG" --repo "$GITHUB_REPOSITORY" \ |
| 123 | + --pattern "quoteforge-$triple.tar.gz.sha256" --dir "$tmp" || true |
| 124 | + done |
| 125 | + arm_mac=$(awk '{print $1}' "$tmp/quoteforge-aarch64-apple-darwin.tar.gz.sha256" 2>/dev/null || echo "") |
| 126 | + x64_mac=$(awk '{print $1}' "$tmp/quoteforge-x86_64-apple-darwin.tar.gz.sha256" 2>/dev/null || echo "") |
| 127 | + arm_linux=$(awk '{print $1}' "$tmp/quoteforge-aarch64-unknown-linux-gnu.tar.gz.sha256" 2>/dev/null || echo "") |
| 128 | + x64_linux=$(awk '{print $1}' "$tmp/quoteforge-x86_64-unknown-linux-gnu.tar.gz.sha256" 2>/dev/null || echo "") |
| 129 | + echo "arm_mac=$arm_mac" >> "$GITHUB_OUTPUT" |
| 130 | + echo "x64_mac=$x64_mac" >> "$GITHUB_OUTPUT" |
| 131 | + echo "arm_linux=$arm_linux" >> "$GITHUB_OUTPUT" |
| 132 | + echo "x64_linux=$x64_linux" >> "$GITHUB_OUTPUT" |
| 133 | +
|
| 134 | + - name: Render formula |
| 135 | + env: |
| 136 | + VERSION: ${{ steps.meta.outputs.version }} |
| 137 | + ARM_MAC: ${{ steps.sha.outputs.arm_mac }} |
| 138 | + X64_MAC: ${{ steps.sha.outputs.x64_mac }} |
| 139 | + ARM_LINUX: ${{ steps.sha.outputs.arm_linux }} |
| 140 | + X64_LINUX: ${{ steps.sha.outputs.x64_linux }} |
| 141 | + run: | |
| 142 | + set -e |
| 143 | + mkdir -p rendered/Formula |
| 144 | + cp packaging/homebrew/quoteforge.rb rendered/Formula/quoteforge.rb |
| 145 | + sed -i "s/^ version \".*\"/ version \"$VERSION\"/" rendered/Formula/quoteforge.rb |
| 146 | + sed -i "s/REPLACE_WITH_AARCH64_DARWIN_SHA/$ARM_MAC/" rendered/Formula/quoteforge.rb |
| 147 | + sed -i "s/REPLACE_WITH_X86_64_DARWIN_SHA/$X64_MAC/" rendered/Formula/quoteforge.rb |
| 148 | + sed -i "s/REPLACE_WITH_AARCH64_LINUX_SHA/$ARM_LINUX/" rendered/Formula/quoteforge.rb |
| 149 | + sed -i "s/REPLACE_WITH_X86_64_LINUX_SHA/$X64_LINUX/" rendered/Formula/quoteforge.rb |
| 150 | + cat rendered/Formula/quoteforge.rb |
| 151 | +
|
| 152 | + - name: Checkout tap |
| 153 | + uses: actions/checkout@v4 |
| 154 | + with: |
| 155 | + repository: lordvins226/homebrew-quoteforge |
| 156 | + token: ${{ secrets.HOMEBREW_TAP_TOKEN }} |
| 157 | + path: tap |
| 158 | + |
| 159 | + - name: Commit and open PR |
| 160 | + env: |
| 161 | + GH_TOKEN: ${{ secrets.HOMEBREW_TAP_TOKEN }} |
| 162 | + VERSION: ${{ steps.meta.outputs.version }} |
| 163 | + run: | |
| 164 | + set -e |
| 165 | + mkdir -p tap/Formula |
| 166 | + cp rendered/Formula/quoteforge.rb tap/Formula/quoteforge.rb |
| 167 | + cd tap |
| 168 | + branch="bump-quoteforge-$VERSION" |
| 169 | + git config user.name "quoteforge-bot" |
| 170 | + git config user.email "actions@users.noreply.github.com" |
| 171 | + git checkout -b "$branch" |
| 172 | + git add Formula/quoteforge.rb |
| 173 | + if git diff --cached --quiet; then |
| 174 | + echo "No formula changes; skipping PR" |
| 175 | + exit 0 |
| 176 | + fi |
| 177 | + git commit -m "quoteforge $VERSION" |
| 178 | + git push --set-upstream origin "$branch" --force |
| 179 | + gh pr create \ |
| 180 | + --title "quoteforge $VERSION" \ |
| 181 | + --body "Auto-generated by quoteforge release workflow." \ |
| 182 | + --base main || echo "PR already exists" |
0 commit comments