MCPcopy
hub / github.com/cli/cli / closeRun

Function closeRun

pkg/cmd/issue/close/close.go:91–172  ·  view source on GitHub ↗
(opts *CloseOptions)

Source from the content-addressed store, hash-verified

89}
90
91func closeRun(opts *CloseOptions) error {
92 cs := opts.IO.ColorScheme()
93 closeReason := opts.Reason
94 if opts.DuplicateOf != "" {
95 if closeReason == "" {
96 closeReason = "duplicate"
97 } else if closeReason != "duplicate" {
98 return cmdutil.FlagErrorf("`--duplicate-of` can only be used with `--reason duplicate`")
99 }
100 }
101
102 httpClient, err := opts.HttpClient()
103 if err != nil {
104 return err
105 }
106
107 baseRepo, err := opts.BaseRepo()
108 if err != nil {
109 return err
110 }
111
112 issue, err := shared.FindIssueOrPR(httpClient, baseRepo, opts.IssueNumber, []string{"id", "number", "title", "state"})
113 if err != nil {
114 return err
115 }
116
117 if issue.State == "CLOSED" {
118 fmt.Fprintf(opts.IO.ErrOut, "%s Issue %s#%d (%s) is already closed\n", cs.Yellow("!"), ghrepo.FullName(baseRepo), issue.Number, issue.Title)
119 return nil
120 }
121
122 var duplicateIssueID string
123 if opts.DuplicateOf != "" {
124 if issue.IsPullRequest() {
125 return cmdutil.FlagErrorf("`--duplicate-of` is only supported for issues")
126 }
127 duplicateIssueNumber, duplicateRepo, err := shared.ParseIssueFromArg(opts.DuplicateOf)
128 if err != nil {
129 return cmdutil.FlagErrorf("invalid value for `--duplicate-of`: %v", err)
130 }
131 duplicateIssueRepo := baseRepo
132 if parsedRepo, present := duplicateRepo.Value(); present {
133 duplicateIssueRepo = parsedRepo
134 }
135 if ghrepo.IsSame(baseRepo, duplicateIssueRepo) && issue.Number == duplicateIssueNumber {
136 return cmdutil.FlagErrorf("`--duplicate-of` cannot reference the current issue")
137 }
138 duplicateIssue, err := shared.FindIssueOrPR(httpClient, duplicateIssueRepo, duplicateIssueNumber, []string{"id"})
139 if err != nil {
140 return err
141 }
142 if duplicateIssue.IsPullRequest() {
143 return cmdutil.FlagErrorf("`--duplicate-of` must reference an issue")
144 }
145 duplicateIssueID = duplicateIssue.ID
146 }
147
148 if opts.Comment != "" {

Callers 2

NewCmdCloseFunction · 0.70
TestCloseRunFunction · 0.70

Calls 10

FlagErrorfFunction · 0.92
FullNameFunction · 0.92
IsSameFunction · 0.92
apiCloseFunction · 0.85
ColorSchemeMethod · 0.80
YellowMethod · 0.80
ValueMethod · 0.80
SuccessIconWithColorMethod · 0.80
BaseRepoMethod · 0.65
IsPullRequestMethod · 0.45

Tested by 1

TestCloseRunFunction · 0.56