Skip prereleases for Homebrew tap and AUR, add lets-beta formula#384
Merged
Conversation
Prerelease tags (v0.0.62-rc1/rc2) were published to the tap's main lets formula, upgrading all brew users to release candidates. skip_upload: auto keeps prereleases out of the main formula and AUR. A second brews entry publishes prerelease tags to an opt-in lets-beta formula (templated skip_upload inverts the condition); the two formulas conflict with each other since both install the lets binary.
Contributor
Reviewer's GuideThis PR updates the Goreleaser configuration to prevent prerelease tags from being published to the main Homebrew and AUR channels, introduces a separate prerelease-only Homebrew formula (lets-beta), and documents the behavior change in the changelog. File-Level Changes
Tips and commandsInteracting with Sourcery
Customizing Your ExperienceAccess your dashboard to:
Getting Help
|
Contributor
There was a problem hiding this comment.
Hey - I've found 1 issue, and left some high level feedback:
- The templated
skip_uploadforlets-betais currently quoted as a string ('{{ if .Prerelease }}false{{ else }}true{{ end }}'); consider making this a boolean template (without quotes) or confirming Goreleaser actually interpre the rendered string as a boolean to avoid subtle config bugs. - You duplicate the
repositoryanddirectoryconfiguration for bothletsandlets-betabrews; consider extracting these via YAML anchors or shared config to reduce repetition and make future tap changes less error-prone.
Prompt for AI Agents
Please address the comments from this code review:
## Overall Comments
- The templated `skip_upload` for `lets-beta` is currently quoted as a string (`'{{ if .Prerelease }}false{{ else }}true{{ end }}'`); consider making this a boolean template (without quotes) or confirming Goreleaser actually interpre the rendered string as a boolean to avoid subtle config bugs.
- You duplicate the `repository` and `directory` configuration for both `lets` and `lets-beta` brews; consider extracting these via YAML anchors or shared config to reduce repetition and make future tap changes less error-prone.
## Individual Comments
### Comment 1
<location path=".goreleaser.yml" line_range="74" />
<code_context>
+ description: "CLI task runner for productive developers - a better alternative to make (prerelease channel)"
+ homepage: "https://lets-cli.org/"
+ license: "MIT"
+ skip_upload: '{{ if .Prerelease }}false{{ else }}true{{ end }}'
+ conflicts:
+ - lets
</code_context>
<issue_to_address>
**issue (bug_risk):** Template for `skip_upload` is rendered as a string, which may not be parsed as a boolean as intended.
Because this field expects a boolean, the quoted template will produce a string like "true"/"false", which may not be interpreted correctly and could cause prereleases to be skipped or uploaded incorrectly. Consider using an unquoted template that renders bare `true`/`false`, or a dedicated `when`/`prerelease` condition if supported.
</issue_to_address>Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.
Review follow-up: skip_upload stays a quoted string template on
purpose -- goreleaser's SkipUpload is a string compared against
"true"/"auto" after template rendering, and an unquoted {{ would be
invalid YAML.
Collaborator
Author
|
Addressed review:
|
kindermax
force-pushed
the
homebrew-prerelease-channel
branch
from
July 16, 2026 07:37
0186fc4 to
c0b413f
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
Prerelease tags (
v0.0.62-rc1,v0.0.62-rc2) were published to lets-cli/homebrew-tap's mainletsformula (and AUR), so everybrew upgradeshipped a release candidate to all users.Changes
brews[lets]andaurs[lets-bin]getskip_upload: auto— goreleaser skips publishing when the tag has a prerelease indicator. Prerelease tags still create GitHub (pre)releases with binaries.brews[lets-beta]entry with an inverted, templatedskip_upload({{ if .Prerelease }}false{{ else }}true{{ end }}) — prerelease tags publish an opt-inFormula/lets-beta.rb:brew install lets-cli/tap/lets-beta. The two formulas declareconflictswith each other since both install theletsbinary.goreleaser checkpasses (config valid; thebrewsdeprecation warning is pre-existing — migrating tohomebrew_caskswould force existing tap users to reinstall, left out of scope).Remediation done separately
The tap's
Formula/lets.rbwas already reverted to v0.0.61 (lets-cli/homebrew-tap@7f36657), so brew users are back on stable now.Verification notes
.Prereleaserenders to e.g.rc1for prerelease tags and empty for stable, per goreleaser template docs, so thelets-betacondition publishes only on prereleases.lets.rbuntouched,lets-beta.rbcreated, no AUR push.Summary by Sourcery
Prevent prerelease versions from being pushed to stable Homebrew and AUR channels and introduce an opt-in Homebrew beta formula.
New Features:
Enhancements:
Documentation: