Skip to content

chore(release): publish a cask instead of a formula#160

Merged
felixgeelhaar merged 1 commit into
mainfrom
chore/brews-to-cask
Jul 26, 2026
Merged

chore(release): publish a cask instead of a formula#160
felixgeelhaar merged 1 commit into
mainfrom
chore/brews-to-cask

Conversation

@felixgeelhaar

Copy link
Copy Markdown
Collaborator

Why

brews: was deprecated in GoReleaser v2.16 and goreleaser check has been failing on it. Homebrew's own guidance is that a cask, not a formula, is the right vehicle for a pre-compiled binary — the formula path generated something that only pretended to build from source.

This is not a purely mechanical rename

A cask-installed binary is subject to Gatekeeper; a formula-installed one was not. The release archives are unnotarized, so macOS quarantines them and they refuse to start. The post-install hook strips the attribute — without it this change ships a package that installs cleanly and then does not run.

Both binaries (tokenops and tokenopsd) are listed; quarantine is stripped across staged_path to cover the pair.

The formula's test: block has no cask equivalent and is dropped.

Follow-up needed after this releases

Formula/tokenops.rb in klarlabs-studio/homebrew-tap becomes stale the moment the cask lands, and both would then exist under the same name. It needs deleting once a release has written Casks/tokenops.rb.

Anyone who installed the formula will not be migrated automatically — Homebrew's tap_migrations.json moves a name between taps, not from formula to cask within one. They will need brew uninstall tokenops && brew install --cask tokenops. Worth a line in the release notes.

goreleaser check passes.

https://claude.ai/code/session_01BFsL9VmX5KHW8cnLMRPei3

`brews:` was deprecated in GoReleaser v2.16, and `goreleaser check` has
been failing on it. Homebrew's own guidance is that a cask, not a
formula, is the right vehicle for a pre-compiled binary: the formula path
generated something that only pretended to build from source.

The conversion is not purely mechanical. A cask-installed binary is
subject to Gatekeeper, which a formula-installed one was not, so the
release archives -- unnotarized -- are quarantined and refuse to start on
macOS. The post-install hook strips the attribute; without it this change
would ship a package that installs cleanly and then will not run.

The formula's `test:` block has no cask equivalent and is dropped.

Both binaries (tokenops and tokenopsd) are listed; quarantine is stripped across staged_path to cover the pair.

Claude-Session: https://claude.ai/code/session_01BFsL9VmX5KHW8cnLMRPei3
@felixgeelhaar
felixgeelhaar merged commit d91967c into main Jul 26, 2026
6 checks passed
@felixgeelhaar
felixgeelhaar deleted the chore/brews-to-cask branch July 26, 2026 15:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant