From ab4cfb84d220b316dff439ce513adb69429ed460 Mon Sep 17 00:00:00 2001 From: Kynan Ware <47394200+BagToad@users.noreply.github.com> Date: Tue, 6 May 2025 14:56:09 -0600 Subject: [PATCH] refactor(a11yprompter): shared method for prompt defaults --- internal/prompter/accessible_prompter_test.go | 2 +- internal/prompter/prompter.go | 19 ++++++++++++++----- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/internal/prompter/accessible_prompter_test.go b/internal/prompter/accessible_prompter_test.go index d4dde6358..8ae449dc9 100644 --- a/internal/prompter/accessible_prompter_test.go +++ b/internal/prompter/accessible_prompter_test.go @@ -171,7 +171,7 @@ func TestAccessiblePrompter(t *testing.T) { go func() { // Wait for prompt to appear - _, err := console.ExpectString("Enter some characters (default: 12345abcdefg)") + _, err := console.ExpectString("Enter some characters (default: 12345abcdefg):") require.NoError(t, err) // Enter nothing diff --git a/internal/prompter/prompter.go b/internal/prompter/prompter.go index 5c3b1238d..4a6a4ff6d 100644 --- a/internal/prompter/prompter.go +++ b/internal/prompter/prompter.go @@ -77,6 +77,19 @@ func (p *accessiblePrompter) newForm(groups ...*huh.Group) *huh.Form { WithOutput(p.stdout) } +// addDefaultsToPrompt adds default values to the prompt string. +func (p *accessiblePrompter) addDefaultsToPrompt(prompt string, defaultValues []string) string { + if len(defaultValues) == 1 { + prompt = fmt.Sprintf("%s (default: %s):", prompt, defaultValues[0]) + } else if len(defaultValues) > 1 { + prompt = fmt.Sprintf("%s (defaults: %s):", prompt, strings.Join(defaultValues, ", ")) + } else { + prompt = fmt.Sprintf("%s:", prompt) + } + + return prompt +} + func (p *accessiblePrompter) Select(prompt, defaultValue string, options []string) (int, error) { var result int formOptions := []huh.Option[int]{} @@ -136,11 +149,7 @@ func (p *accessiblePrompter) MultiSelect(prompt string, defaults []string, optio func (p *accessiblePrompter) Input(prompt, defaultValue string) (string, error) { result := defaultValue - if defaultValue != "" { - prompt = fmt.Sprintf("%s (default: %s)", prompt, defaultValue) - } else { - prompt = fmt.Sprintf("%s:", prompt) - } + prompt = p.addDefaultsToPrompt(prompt, []string{defaultValue}) form := p.newForm( huh.NewGroup( huh.NewInput().