cli: share the stop-sessions confirmation prompt · Entire

cli: share the stop-sessions confirmation prompt

c798db8·

Soph·2w ago·1 file·+27 added/-28 removed

runStopAll and runStopMultiSelect repeated the confirm-form/cancel/ decline handling; extract confirmStopSessions. Covered by the existing session stop tests.

Co-Authored-By: Claude Fable 5 noreply@anthropic.com

Sessions

5c2527f62f77View transcript

Changes

1

758 unmodified lines

if !force {
    var confirmed bool
    form := NewAccessibleForm(
        huh.NewGroup(
            huh.NewConfirm().
                Title(fmt.Sprintf("Stop %d session(s)?", len(activeSessions))).
                Value(&confirmed),
            ),
        )
    if err := form.Run(); err != nil {
        return handleFormCancellation(cmd.OutOrStdout(), "Stop", err)
    }
    if !confirmed {
        fmt.Fprintln(cmd.OutOrStdout(), "Stop cancelled.")
        return nil
    }
    confirmed, err := confirmStopSessions(cmd, len(activeSessions))
    if err != nil || !confirmed {
        return err
    }
}

return stopSelectedSessions(ctx, cmd, activeSessions)

// confirmStopSessions asks the user to confirm stopping count sessions.
// When declined or cancelled it prints the outcome and returns confirmed=false.
func confirmStopSessions(cmd *cobra.Command, count int) (bool, error) {
    var confirmed bool
    form := NewAccessibleForm(
        huh.NewGroup(
            huh.NewConfirm().
                Title(fmt.Sprintf("Stop %d session(s)?", count)).
                Value(&confirmed),
            ),
        )
    if err := form.Run(); err != nil {
        return false, handleFormCancellation(cmd.OutOrStdout(), "Stop", err)
    }
    if !confirmed {
        fmt.Fprintln(cmd.OutOrStdout(), "Stop cancelled.")
        return false, nil
    }
    return true, nil
}

// runStopMultiSelect shows a TUI multi-select for multiple active sessions.
func runStopMultiSelect(ctx context.Context, cmd *cobra.Command, activeSessions []*strategy.SessionState, force bool) error {
    options := make([]huh.Option[string], len(activeSessions))
    
    // Confirm only if not forcing
    if !force {
        var confirmed bool
        form := NewAccessibleForm(
            huh.NewGroup(
                huh.NewConfirm().
                    Title(fmt.Sprintf("Stop %d session(s)?", len(selectedIDs))).
                    Value(&confirmed),
                ),
            )
        if err := form.Run(); err != nil {
            return handleFormCancellation(cmd.OutOrStdout(), "Stop", err)
        }
        if !confirmed {
            fmt.Fprintln(cmd.OutOrStdout(), "Stop cancelled.")
            return nil
        }
        confirmed, err := confirmStopSessions(cmd, len(selectedIDs))
        if err != nil || !confirmed {
            return err
        }
    }