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

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)
}
}