From f6fba8eda4243aa587d204b3c61c433ca0af4691 Mon Sep 17 00:00:00 2001 From: "m.kindritskiy" Date: Thu, 16 Jul 2026 10:17:01 +0300 Subject: [PATCH 1/3] Skip prereleases for Homebrew tap and AUR, add lets-beta formula 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. --- .goreleaser.yml | 20 ++++++++++++++++++++ docs/docs/changelog.md | 1 + 2 files changed, 21 insertions(+) diff --git a/.goreleaser.yml b/.goreleaser.yml index bc5af607..ca74c8a9 100644 --- a/.goreleaser.yml +++ b/.goreleaser.yml @@ -56,6 +56,24 @@ brews: description: "CLI task runner for productive developers - a better alternative to make" homepage: "https://lets-cli.org/" license: "MIT" + # do not publish prereleases (e.g. v1.0.0-rc1) to the main formula + skip_upload: auto + conflicts: + - lets-beta + repository: + owner: lets-cli + name: homebrew-tap + token: "{{ .Env.HOMEBREW_TAP_GITHUB_TOKEN }}" + directory: Formula + # prerelease channel: published ONLY for prerelease tags, + # installable via `brew install lets-cli/tap/lets-beta` + - name: lets-beta + 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 repository: owner: lets-cli name: homebrew-tap @@ -67,6 +85,8 @@ aurs: homepage: "https://lets-cli.org/" description: "CLI task runner for productive developers - a better alternative to make" license: "MIT" + # do not publish prereleases to AUR + skip_upload: auto maintainers: - 'Kindritskiy Maksym ' contributors: diff --git a/docs/docs/changelog.md b/docs/docs/changelog.md index ba1ffc9a..d0ad2640 100644 --- a/docs/docs/changelog.md +++ b/docs/docs/changelog.md @@ -5,6 +5,7 @@ title: Changelog ## [Unreleased](https://github.com/lets-cli/lets/releases/tag/v0.0.X) +* `[Changed]` Prerelease tags (e.g. `v0.0.62-rc1`) are no longer published to the Homebrew tap `lets` formula or AUR; they are published to a new opt-in `lets-beta` formula instead (`brew install lets-cli/tap/lets-beta`). * `[Fixed]` `source <(lets completion -s zsh)` no longer hangs: skip terminal background-color detection when lets runs outside the terminal's foreground process group (e.g. inside process substitution), where the query would suspend the process with SIGTTIN/SIGTTOU. * `[Fixed]` Add spacing between the `EXAMPLES` help title and its examples. * `[Fixed]` Align styled error output to the left while preserving the padded error badge. From 23c6660f570befc60b83630d6e6ed34b70299cfe Mon Sep 17 00:00:00 2001 From: "m.kindritskiy" Date: Thu, 16 Jul 2026 10:20:52 +0300 Subject: [PATCH 2/3] Dedupe tap repository config via YAML anchor, document skip_upload type 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. --- .goreleaser.yml | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/.goreleaser.yml b/.goreleaser.yml index ca74c8a9..ed930712 100644 --- a/.goreleaser.yml +++ b/.goreleaser.yml @@ -60,7 +60,7 @@ brews: skip_upload: auto conflicts: - lets-beta - repository: + repository: &homebrew-tap owner: lets-cli name: homebrew-tap token: "{{ .Env.HOMEBREW_TAP_GITHUB_TOKEN }}" @@ -71,13 +71,12 @@ brews: description: "CLI task runner for productive developers - a better alternative to make (prerelease channel)" homepage: "https://lets-cli.org/" license: "MIT" + # skip_upload is a string in goreleaser (compared against "true"/"auto" + # after template rendering), so the quoted template is intentional skip_upload: '{{ if .Prerelease }}false{{ else }}true{{ end }}' conflicts: - lets - repository: - owner: lets-cli - name: homebrew-tap - token: "{{ .Env.HOMEBREW_TAP_GITHUB_TOKEN }}" + repository: *homebrew-tap directory: Formula aurs: From c0b413ff0574670caa430096a6215db3801b2fcd Mon Sep 17 00:00:00 2001 From: "m.kindritskiy" Date: Thu, 16 Jul 2026 10:30:06 +0300 Subject: [PATCH 3/3] Document lets-beta prerelease formula in installation docs --- docs/docs/installation.mdx | 51 +++++++++++++++++++++++++------------- 1 file changed, 34 insertions(+), 17 deletions(-) diff --git a/docs/docs/installation.mdx b/docs/docs/installation.mdx index 16a69ba3..5d2263e2 100644 --- a/docs/docs/installation.mdx +++ b/docs/docs/installation.mdx @@ -11,20 +11,21 @@ brew tap lets-cli/tap brew install lets-cli/tap/lets ``` -## Arch - -Install the latest binary release from [AUR lets-bin](https://aur.archlinux.org/packages/lets-bin/). +### Prereleases -If you use `yay` as your AUR helper: +The main `lets` formula only receives stable releases. Prerelease versions (e.g. `v0.0.62-rc1`) are published +to a separate `lets-beta` formula: ```bash -yay -S lets-bin +brew install lets-cli/tap/lets-beta ``` -You can also install the bleeding edge version from [AUR lets-git](https://aur.archlinux.org/packages/lets-git/). +Both formulas install the `lets` binary, so they conflict with each other — uninstall one before installing the +other. To switch back to stable: ```bash -yay -S lets-git +brew uninstall lets-cli/tap/lets-beta +brew install lets-cli/tap/lets ``` ## Shell Script @@ -70,6 +71,22 @@ To install into a custom lets home directory, set `LETS_HOME`. The binary will b curl -fsSL https://lets-cli.org/install.sh | LETS_HOME=$HOME/tools/lets bash ``` +## Arch + +Install the latest binary release from [AUR lets-bin](https://aur.archlinux.org/packages/lets-bin/). + +If you use `yay` as your AUR helper: + +```bash +yay -S lets-bin +``` + +You can also install the bleeding edge version from [AUR lets-git](https://aur.archlinux.org/packages/lets-git/). + +```bash +yay -S lets-git +``` + ## Binary (Manual) Download the version you need for your platform from [Lets Releases](https://github.com/lets-cli/lets/releases). @@ -128,32 +145,32 @@ If your `lets` version is below `0.0.30`, use the shell script and specify the l brew upgrade lets-cli/tap/lets ``` -### Arch +### Shell Script -AUR packages provide the latest version. +Run the install script again to update `lets` to the latest version. ```bash -yay -Syu lets-bin +curl -fsSL https://lets-cli.org/install.sh | bash ``` -For the bleeding edge package: +To update to a specific version: ```bash -yay -Syu lets-git +curl -fsSL https://lets-cli.org/install.sh | LETS_VERSION=v0.0.21 bash ``` -### Shell Script +### Arch -Run the install script again to update `lets` to the latest version. +AUR packages provide the latest version. ```bash -curl -fsSL https://lets-cli.org/install.sh | bash +yay -Syu lets-bin ``` -To update to a specific version: +For the bleeding edge package: ```bash -curl -fsSL https://lets-cli.org/install.sh | LETS_VERSION=v0.0.21 bash +yay -Syu lets-git ``` ### Binary