X Tutup
Skip to content

Commit e7df220

Browse files
Add confirmation prompt
1 parent d0fe1ce commit e7df220

File tree

1 file changed

+25
-1
lines changed

1 file changed

+25
-1
lines changed

pkg/cmd/issue/delete/delete.go

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
11
package delete
22

33
import (
4+
"errors"
45
"fmt"
6+
"github.com/AlecAivazis/survey/v2"
7+
"github.com/cli/cli/pkg/prompt"
58
"net/http"
9+
"strconv"
610

711
"github.com/cli/cli/api"
812
"github.com/cli/cli/internal/config"
@@ -65,12 +69,32 @@ func deleteRun(opts *DeleteOptions) error {
6569
return err
6670
}
6771

72+
if !opts.IO.CanPrompt() {
73+
return errors.New("deleting issues is only supported when running interactively")
74+
}
75+
76+
answer := ""
77+
err = prompt.SurveyAskOne(
78+
&survey.Input{
79+
Message: fmt.Sprintf("You're going to delete issue #%d. This action cannot be reversed. To confirm, type the issue number:", issue.Number),
80+
},
81+
&answer,
82+
)
83+
if err != nil {
84+
return err
85+
}
86+
answerInt, err := strconv.Atoi(answer)
87+
if err != nil || answerInt != issue.Number {
88+
fmt.Fprintf(opts.IO.Out, "Issue #%d was not deleted.\n", issue.Number)
89+
return nil
90+
}
91+
6892
err = api.IssueDelete(apiClient, baseRepo, *issue)
6993
if err != nil {
7094
return err
7195
}
7296

73-
fmt.Fprintf(opts.IO.ErrOut, "%s Deleted issue #%d (%s)\n", cs.Red("✔"), issue.Number, issue.Title)
97+
fmt.Fprintf(opts.IO.ErrOut, "%s Deleted issue #%d (%s).\n", cs.Red("✔"), issue.Number, issue.Title)
7498

7599
return nil
76100
}

0 commit comments

Comments
 (0)
X Tutup