@@ -19,9 +19,11 @@ package iostreams
1919
2020import (
2121 "context"
22+ "errors"
2223 "slices"
2324
2425 huh "charm.land/huh/v2"
26+ "github.com/slackapi/slack-cli/internal/slackerror"
2527 "github.com/slackapi/slack-cli/internal/style"
2628)
2729
@@ -42,7 +44,9 @@ func buildInputForm(message string, cfg InputPromptConfig, input *string) *huh.F
4244func charmInputPrompt (_ * IOStreams , _ context.Context , message string , cfg InputPromptConfig ) (string , error ) {
4345 var input string
4446 err := buildInputForm (message , cfg , & input ).Run ()
45- if err != nil {
47+ if errors .Is (err , huh .ErrUserAborted ) {
48+ return "" , slackerror .New (slackerror .ErrProcessInterrupted )
49+ } else if err != nil {
4650 return "" , err
4751 }
4852 return input , nil
@@ -60,7 +64,9 @@ func buildConfirmForm(message string, choice *bool) *huh.Form {
6064func charmConfirmPrompt (_ * IOStreams , _ context.Context , message string , defaultValue bool ) (bool , error ) {
6165 var choice = defaultValue
6266 err := buildConfirmForm (message , & choice ).Run ()
63- if err != nil {
67+ if errors .Is (err , huh .ErrUserAborted ) {
68+ return false , slackerror .New (slackerror .ErrProcessInterrupted )
69+ } else if err != nil {
6470 return false , err
6571 }
6672 return choice , nil
@@ -92,7 +98,9 @@ func buildSelectForm(msg string, options []string, cfg SelectPromptConfig, selec
9298func charmSelectPrompt (_ * IOStreams , _ context.Context , msg string , options []string , cfg SelectPromptConfig ) (SelectPromptResponse , error ) {
9399 var selected string
94100 err := buildSelectForm (msg , options , cfg , & selected ).Run ()
95- if err != nil {
101+ if errors .Is (err , huh .ErrUserAborted ) {
102+ return SelectPromptResponse {}, slackerror .New (slackerror .ErrProcessInterrupted )
103+ } else if err != nil {
96104 return SelectPromptResponse {}, err
97105 }
98106
@@ -117,7 +125,9 @@ func buildPasswordForm(message string, cfg PasswordPromptConfig, input *string)
117125func charmPasswordPrompt (_ * IOStreams , _ context.Context , message string , cfg PasswordPromptConfig ) (PasswordPromptResponse , error ) {
118126 var input string
119127 err := buildPasswordForm (message , cfg , & input ).Run ()
120- if err != nil {
128+ if errors .Is (err , huh .ErrUserAborted ) {
129+ return PasswordPromptResponse {}, slackerror .New (slackerror .ErrProcessInterrupted )
130+ } else if err != nil {
121131 return PasswordPromptResponse {}, err
122132 }
123133 return PasswordPromptResponse {Prompt : true , Value : input }, nil
@@ -142,7 +152,9 @@ func buildMultiSelectForm(message string, options []string, selected *[]string)
142152func charmMultiSelectPrompt (_ * IOStreams , _ context.Context , message string , options []string ) ([]string , error ) {
143153 var selected []string
144154 err := buildMultiSelectForm (message , options , & selected ).Run ()
145- if err != nil {
155+ if errors .Is (err , huh .ErrUserAborted ) {
156+ return []string {}, slackerror .New (slackerror .ErrProcessInterrupted )
157+ } else if err != nil {
146158 return []string {}, err
147159 }
148160 return selected , nil
0 commit comments