add brew auto-update confirmation flag · Entire
add brew auto-update confirmation flag
Run Homebrew upgrades with --yes after the CLI prompt has already confirmed the user wants to update.
Sessions
Changes
3
cmd/entire/cli/versioncheck
Mautoupdate_test.go+8/-8
Mversioncheck.go+2/-2
Mversioncheck_test.go+3/-3
if f.installCalls != 0 {
t.Errorf("installer called with kill-switch set")
}
assertManualHint(t, buf.String(), "brew upgrade entire")
assertManualHint(t, buf.String(), brewUpgradeCmd)
}
func TestMaybeAutoUpdate_NoTTY(t *testing.T) {
if f.installCalls != 0 {
t.Errorf("installer called without TTY")
}
assertManualHint(t, buf.String(), "brew upgrade entire")
assertManualHint(t, buf.String(), brewUpgradeCmd)
}
func TestMaybeAutoUpdate_CIEnv(t *testing.T) {
if f.installCalls != 0 {
t.Errorf("installer called on CI (CI=true)")
}
assertManualHint(t, buf.String(), "brew upgrade entire")
assertManualHint(t, buf.String(), brewUpgradeCmd)
}
func TestMaybeAutoUpdate_NonTerminalWriter(t *testing.T) {
if f.installCalls != 0 {
t.Errorf("installer called with non-terminal output writer")
}
assertManualHint(t, buf.String(), "brew upgrade entire")
assertManualHint(t, buf.String(), brewUpgradeCmd)
}
// TestMaybeAutoUpdate_WindowsUnknownInstallerNoAutoRun verifies that on
if f.installCalls != 1 {
t.Fatalf("installer called %d times, want 1", f.installCalls)
}
if f.lastCommand != "brew upgrade entire" {
t.Errorf("installer got %q, want brew upgrade entire", f.lastCommand)
}
if f.lastCommand != brewUpgradeCmd {
t.Errorf("installer got %q, want %q", f.lastCommand, brewUpgradeCmd)
}
if action != autoUpdateActionUpdate {
t.Errorf("action = %q, want %q", action, autoUpdateActionUpdate)
}
if !strings.Contains(out, "Try again later running:") {
t.Errorf("missing retry hint: %q", out)
}
if !strings.Contains(out, "brew upgrade entire") {
if !strings.Contains(out, brewUpgradeCmd) {
t.Errorf("retry hint missing installer command: %q", out)
}
}
}
func nonWindowsAutoInstallers() []installerCase {
return []installerCase{
{name: "brew", setup: useBrewExecutable, wantCmd: "brew upgrade entire"},
{name: "brew", setup: useBrewExecutable, wantCmd: brewUpgradeCmd},
{name: "mise", setup: useMiseExecutable, wantCmd: "mise upgrade entire"},
{name: "scoop", setup: useScoopExecutable, wantCmd: "scoop update entire/cli"},
{name: "unknown_curl_bash", setup: useUnknownExecutable, wantCmd: "curl -fsSL https://entire.io/install.sh | bash"},
}
switch installManagerForCurrentBinary() {
case installManagerBrew:
if releaseChannel(currentVersion) == installChannelNightly {
return "brew upgrade entire@nightly"
return "brew upgrade --yes entire@nightly"
}
return "brew upgrade entire"
return "brew upgrade --yes entire"
case installManagerMise:
return "mise upgrade entire"
case installManagerScoop:
}
const brewUpgradeCmd = "brew upgrade entire"
const brewUpgradeCmd = "brew upgrade --yes entire"
const scoopExecutablePath = `C:\Users\test\scoop\apps\cli\current\entire.exe`
{name: "homebrew nightly path uses brew command",
currentVersion: "1.0.1-nightly.202604101200.abc1234",
execPath: func() (string, error) { return "/opt/homebrew/bin/entire", nil },
want: "brew upgrade entire@nightly",
want: "brew upgrade --yes entire@nightly",
},
{
name: "linuxbrew path",
}
t.Errorf("SkippedVersion = %q, want v2.0.0", cache.SkippedVersion)
if f.lastCmdStr != brewUpgradeCmd {
t.Errorf("prompt got cmd %q, want brew upgrade entire", f.lastCmdStr)
t.Errorf("prompt got cmd %q, want %q", f.lastCmdStr, brewUpgradeCmd)
}
}