mirror of
https://gitea.com/gitea/tea.git
synced 2026-10-26 19:11:25 +01:00
FormPrompter is the only production prompter and implements the rich prompt API, so Ask, AskText and ConfirmDefault become the Prompter interface and the plain Input/Confirm fallbacks go away. Confirmations that default to no derive their non-terminal wording from the prompt, and single deletes share deleteConfirmed for the prompt, the request and the done line. Signed-off-by: bircni <bircni@icloud.com>
45 lines
1.7 KiB
Go
45 lines
1.7 KiB
Go
// Copyright 2026 The Gitea Authors. All rights reserved.
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
package app
|
|
|
|
import (
|
|
"gitea.dev/tea/internal/terminal"
|
|
"github.com/spf13/cobra"
|
|
)
|
|
|
|
// confirmAction asks c under the prompt policy unless --yes was supplied. Constructive actions set
|
|
// DefaultYes, destructive ones keep the default no, and irreversible ones set Typed. A declined
|
|
// confirmation returns terminal.ErrCanceled.
|
|
func (a *application) confirmAction(cmd *cobra.Command, c terminal.Confirmation) error {
|
|
s, err := a.deps.Settings.Load()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return terminal.ConfirmAction(cmd.Context(), c, a.options.yes, a.deps.Streams, a.policy(s), a.deps.Prompter)
|
|
}
|
|
|
|
// deleteConfirmed asks to delete subject, such as `label "bug" from alice/x`, deletes it with del
|
|
// and reports "Deleted <subject>".
|
|
func (a *application) deleteConfirmed(cmd *cobra.Command, subject string, del func() error) error {
|
|
if err := a.confirmAction(cmd, terminal.Confirmation{Prompt: "Delete " + subject + "?"}); err != nil {
|
|
return err
|
|
}
|
|
if err := del(); err != nil {
|
|
return err
|
|
}
|
|
a.done(cmd, "Deleted %s", subject)
|
|
return nil
|
|
}
|
|
|
|
// requireInput fills a missing value from a prompt titled label, such as "Label name", re-prompting
|
|
// until the answer is non-empty and validate, when set, accepts it. Without prompts it returns a
|
|
// usage error naming --flag. It reports whether it prompted.
|
|
func (a *application) requireInput(cmd *cobra.Command, value *string, flag, label string, validate func(string) error) (bool, error) {
|
|
s, err := a.deps.Settings.Load()
|
|
if err != nil {
|
|
return false, err
|
|
}
|
|
return terminal.RequireInput(cmd.Context(), value, flag, label, validate, a.deps.Streams, a.policy(s), a.deps.Prompter)
|
|
}
|