Skip to content

Commit a76c6a4

Browse files
fullstackjamclaude
andcommitted
fix(updater): pull tap before brew upgrade to ensure latest formula
Without pulling the tap first, HOMEBREW_NO_AUTO_UPDATE=1 would prevent brew from seeing new versions. Now we do a targeted git pull on the openbootdotdev/tap repo before upgrading, matching opencode's approach. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent 3531e77 commit a76c6a4

File tree

2 files changed

+13
-5
lines changed

2 files changed

+13
-5
lines changed

internal/updater/updater.go

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -280,11 +280,19 @@ func getHTTPClient() *http.Client {
280280
return httpClient
281281
}
282282

283+
const brewTap = "openbootdotdev/tap"
284+
const brewFormula = brewTap + "/openboot"
285+
283286
// execBrewUpgrade is a package-level variable to allow test injection.
284-
// HOMEBREW_NO_AUTO_UPDATE=1 prevents brew from doing a full `brew update`
285-
// (fetching all formula updates) before upgrading, which would be slow and noisy.
287+
// It pulls the tap first (to get the latest formula without a full `brew update`)
288+
// then upgrades the formula. HOMEBREW_NO_AUTO_UPDATE=1 prevents brew from doing
289+
// a slow full update of all taps.
286290
var execBrewUpgrade = func(formula string) error {
287-
cmd := exec.Command("brew", "upgrade", formula)
291+
script := fmt.Sprintf(
292+
`git -C "$(brew --repo %s)" pull --ff-only && brew upgrade %s`,
293+
brewTap, formula,
294+
)
295+
cmd := exec.Command("sh", "-c", script)
288296
cmd.Env = append(os.Environ(), "HOMEBREW_NO_AUTO_UPDATE=1")
289297
return cmd.Run()
290298
}
@@ -302,7 +310,7 @@ func homebrewAutoUpgrade(currentVersion string) {
302310

303311
latestClean := trimVersionPrefix(state.LatestVersion)
304312
ui.Info(fmt.Sprintf("Updating OpenBoot v%s → v%s via Homebrew...", currentVersion, latestClean))
305-
if err := execBrewUpgrade("openboot"); err != nil {
313+
if err := execBrewUpgrade(brewFormula); err != nil {
306314
ui.Warn(fmt.Sprintf("Auto-update failed: %v", err))
307315
ui.Muted("Run 'brew upgrade openboot' to update manually")
308316
fmt.Println()

internal/updater/updater_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -360,7 +360,7 @@ func TestHomebrewAutoUpgrade_UpdateAvailable_Success(t *testing.T) {
360360

361361
homebrewAutoUpgrade("1.0.0")
362362

363-
assert.Equal(t, "openboot", calledWith, "should call brew upgrade openboot")
363+
assert.Equal(t, brewFormula, calledWith, "should call brew upgrade with fully-qualified formula")
364364
}
365365

366366
func TestHomebrewAutoUpgrade_UpdateAvailable_Failure(t *testing.T) {

0 commit comments

Comments
 (0)