|
15 | 15 |
|
16 | 16 | - name: Extract version |
17 | 17 | id: version |
18 | | - run: echo "version=${GITHUB_REF_NAME}" >> "$GITHUB_OUTPUT" |
| 18 | + run: | |
| 19 | + TAG="${GITHUB_REF_NAME}" |
| 20 | + echo "tag=${TAG}" >> "$GITHUB_OUTPUT" |
| 21 | + echo "number=${TAG#v}" >> "$GITHUB_OUTPUT" |
19 | 22 |
|
20 | 23 | - name: Build release binary |
21 | 24 | run: | |
|
36 | 39 | fi |
37 | 40 |
|
38 | 41 | # Generate Info.plist |
39 | | - VERSION="${{ steps.version.outputs.version }}" |
40 | | - VERSION="${VERSION#v}" |
| 42 | + VERSION="${{ steps.version.outputs.number }}" |
41 | 43 | cat > "${APP}/Contents/Info.plist" << PLIST |
42 | 44 | <?xml version="1.0" encoding="UTF-8"?> |
43 | 45 | <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> |
@@ -76,11 +78,63 @@ jobs: |
76 | 78 | codesign -dv --verbose=4 TokenMeter.app |
77 | 79 |
|
78 | 80 | - name: Create zip |
| 81 | + env: |
| 82 | + ZIP_NAME: TokenMeter-${{ steps.version.outputs.tag }}-macos-aarch64.zip |
79 | 83 | run: | |
80 | | - ditto -c -k --keepParent TokenMeter.app TokenMeter-${{ steps.version.outputs.version }}-macos.zip |
| 84 | + ditto -c -k --keepParent TokenMeter.app "$ZIP_NAME" |
| 85 | + shasum -a 256 "$ZIP_NAME" | awk '{print $1}' > sha256.txt |
| 86 | + echo "SHA256: $(cat sha256.txt)" |
81 | 87 |
|
82 | 88 | - name: Create GitHub Release |
83 | 89 | uses: softprops/action-gh-release@v2 |
84 | 90 | with: |
85 | | - files: TokenMeter-${{ steps.version.outputs.version }}-macos.zip |
| 91 | + files: TokenMeter-${{ steps.version.outputs.tag }}-macos-aarch64.zip |
86 | 92 | generate_release_notes: true |
| 93 | + |
| 94 | + - name: Update Homebrew cask |
| 95 | + env: |
| 96 | + GH_TOKEN: ${{ secrets.HOMEBREW_TAP_TOKEN }} |
| 97 | + run: | |
| 98 | + VERSION="${{ steps.version.outputs.number }}" |
| 99 | + SHA256=$(cat sha256.txt) |
| 100 | + TAG="${{ steps.version.outputs.tag }}" |
| 101 | +
|
| 102 | + CASK_CONTENT=$(cat <<RUBY |
| 103 | + cask "tokenmeter" do |
| 104 | + version "${VERSION}" |
| 105 | + sha256 "${SHA256}" |
| 106 | +
|
| 107 | + url "https://github.com/Priyans-hu/tokenmeter/releases/download/${TAG}/TokenMeter-${TAG}-macos-aarch64.zip" |
| 108 | + name "TokenMeter" |
| 109 | + desc "macOS menu bar app for tracking Claude Code usage, rate limits, and costs" |
| 110 | + homepage "https://github.com/Priyans-hu/tokenmeter" |
| 111 | +
|
| 112 | + depends_on macos: ">= :sonoma" |
| 113 | +
|
| 114 | + app "TokenMeter.app" |
| 115 | +
|
| 116 | + postflight do |
| 117 | + system_command "/usr/bin/xattr", |
| 118 | + args: ["-cr", "#{appdir}/TokenMeter.app"], |
| 119 | + sudo: false |
| 120 | + end |
| 121 | +
|
| 122 | + zap trash: [ |
| 123 | + "~/Library/Application Support/com.priyanshugarg.tokenmeter", |
| 124 | + ] |
| 125 | + end |
| 126 | + RUBY |
| 127 | + ) |
| 128 | +
|
| 129 | + # Get current file SHA from homebrew-tap repo |
| 130 | + FILE_SHA=$(gh api repos/Priyans-hu/homebrew-tap/contents/Casks/tokenmeter.rb --jq '.sha') |
| 131 | +
|
| 132 | + # Update the cask file |
| 133 | + echo "$CASK_CONTENT" | gh api repos/Priyans-hu/homebrew-tap/contents/Casks/tokenmeter.rb \ |
| 134 | + -X PUT \ |
| 135 | + -f message="Update tokenmeter to ${TAG}" \ |
| 136 | + -f content="$(echo "$CASK_CONTENT" | base64)" \ |
| 137 | + -f sha="$FILE_SHA" \ |
| 138 | + --silent |
| 139 | +
|
| 140 | + echo "Homebrew cask updated to ${TAG}" |
0 commit comments