Skip to content

Commit 74f858e

Browse files
Add Homebrew Cask for macOS .app bundle
Adds a cask template and updates update-tap.sh to also push Casks/attn.rb to the tap, so users can install the native .app via `brew install --cask lightsofapollo/attn/attn`. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 19a5dd9 commit 74f858e

2 files changed

Lines changed: 58 additions & 9 deletions

File tree

homebrew/attn-cask.rb.template

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
cask "attn" do
2+
version "%%VERSION%%"
3+
sha256 "%%SHA256_DARWIN_ARM64_APP%%"
4+
5+
url "https://github.com/lightsofapollo/attn/releases/download/v#{version}/attn-v#{version}-darwin-arm64.app.zip"
6+
name "attn"
7+
desc "A beautiful markdown viewer that launches from the CLI"
8+
homepage "https://github.com/lightsofapollo/attn"
9+
10+
app "attn.app"
11+
binary "#{appdir}/attn.app/Contents/MacOS/attn"
12+
13+
zap trash: "~/.attn"
14+
end

homebrew/update-tap.sh

Lines changed: 44 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,17 +17,23 @@ VERSION="${1:?Usage: update-tap.sh <version>}"
1717
TAG="v${VERSION}"
1818

1919
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
20-
TEMPLATE="${SCRIPT_DIR}/attn.rb.template"
20+
FORMULA_TEMPLATE="${SCRIPT_DIR}/attn.rb.template"
21+
CASK_TEMPLATE="${SCRIPT_DIR}/attn-cask.rb.template"
2122

22-
if [ ! -f "$TEMPLATE" ]; then
23-
echo "Template not found: ${TEMPLATE}" >&2
23+
if [ ! -f "$FORMULA_TEMPLATE" ]; then
24+
echo "Formula template not found: ${FORMULA_TEMPLATE}" >&2
25+
exit 1
26+
fi
27+
if [ ! -f "$CASK_TEMPLATE" ]; then
28+
echo "Cask template not found: ${CASK_TEMPLATE}" >&2
2429
exit 1
2530
fi
2631

2732
echo "Fetching SHA256 checksums for ${TAG}..."
2833

2934
SHA_DARWIN_ARM64="$(curl -sfL "https://github.com/${REPO}/releases/download/${TAG}/attn-${TAG}-darwin-arm64.sha256" | awk '{print $1}')"
3035
SHA_LINUX_X64="$(curl -sfL "https://github.com/${REPO}/releases/download/${TAG}/attn-${TAG}-linux-x64.sha256" | awk '{print $1}')"
36+
SHA_DARWIN_ARM64_APP="$(curl -sfL "https://github.com/${REPO}/releases/download/${TAG}/attn-${TAG}-darwin-arm64.app.zip.sha256" | awk '{print $1}')"
3137

3238
if [ -z "$SHA_DARWIN_ARM64" ]; then
3339
echo "Failed to fetch darwin-arm64 SHA256" >&2
@@ -37,23 +43,28 @@ if [ -z "$SHA_LINUX_X64" ]; then
3743
echo "Failed to fetch linux-x64 SHA256" >&2
3844
exit 1
3945
fi
46+
if [ -z "$SHA_DARWIN_ARM64_APP" ]; then
47+
echo "Failed to fetch darwin-arm64 .app.zip SHA256" >&2
48+
exit 1
49+
fi
50+
51+
echo " darwin-arm64: ${SHA_DARWIN_ARM64}"
52+
echo " linux-x64: ${SHA_LINUX_X64}"
53+
echo " darwin-arm64 app: ${SHA_DARWIN_ARM64_APP}"
4054

41-
echo " darwin-arm64: ${SHA_DARWIN_ARM64}"
42-
echo " linux-x64: ${SHA_LINUX_X64}"
55+
# --- Update Formula ---
4356

44-
# Generate formula from template
4557
FORMULA="$(sed \
4658
-e "s/%%VERSION%%/${VERSION}/g" \
4759
-e "s/%%SHA256_DARWIN_ARM64%%/${SHA_DARWIN_ARM64}/g" \
4860
-e "s/%%SHA256_LINUX_X64%%/${SHA_LINUX_X64}/g" \
49-
"$TEMPLATE")"
61+
"$FORMULA_TEMPLATE")"
5062

51-
# Get the current file SHA from the tap repo (needed for the GitHub API update)
5263
CURRENT_SHA="$(gh api "repos/${TAP_REPO}/contents/Formula/attn.rb" --jq '.sha' 2>/dev/null || true)"
5364

5465
ARGS=(
5566
--method PUT
56-
--field "message=Update attn to ${VERSION}"
67+
--field "message=Update attn formula to ${VERSION}"
5768
--field "content=$(echo "$FORMULA" | base64)"
5869
--field "branch=main"
5970
)
@@ -65,3 +76,27 @@ fi
6576
gh api "repos/${TAP_REPO}/contents/Formula/attn.rb" "${ARGS[@]}"
6677

6778
echo "Formula updated in ${TAP_REPO}"
79+
80+
# --- Update Cask ---
81+
82+
CASK="$(sed \
83+
-e "s/%%VERSION%%/${VERSION}/g" \
84+
-e "s/%%SHA256_DARWIN_ARM64_APP%%/${SHA_DARWIN_ARM64_APP}/g" \
85+
"$CASK_TEMPLATE")"
86+
87+
CASK_CURRENT_SHA="$(gh api "repos/${TAP_REPO}/contents/Casks/attn.rb" --jq '.sha' 2>/dev/null || true)"
88+
89+
CASK_ARGS=(
90+
--method PUT
91+
--field "message=Update attn cask to ${VERSION}"
92+
--field "content=$(echo "$CASK" | base64)"
93+
--field "branch=main"
94+
)
95+
96+
if [ -n "$CASK_CURRENT_SHA" ]; then
97+
CASK_ARGS+=(--field "sha=${CASK_CURRENT_SHA}")
98+
fi
99+
100+
gh api "repos/${TAP_REPO}/contents/Casks/attn.rb" "${CASK_ARGS[@]}"
101+
102+
echo "Cask updated in ${TAP_REPO}"

0 commit comments

Comments
 (0)