@@ -28,6 +28,7 @@ type Issue struct {
2828 Title string
2929 URL string
3030 State string
31+ Closed bool
3132 Body string
3233 CreatedAt time.Time
3334 UpdatedAt time.Time
@@ -307,6 +308,7 @@ func IssueByNumber(client *Client, repo ghrepo.Interface, number int) (*Issue, e
307308 id
308309 title
309310 state
311+ closed
310312 body
311313 author {
312314 login
@@ -367,13 +369,17 @@ func IssueByNumber(client *Client, repo ghrepo.Interface, number int) (*Issue, e
367369 return & resp .Repository .Issue , nil
368370}
369371
370- func IssueClose (client * Client , repo ghrepo.Interface , issueNumber int ) error {
372+ func IssueClose (client * Client , repo ghrepo.Interface , issueNumber int ) ( alreadyClosed bool , _ error ) {
371373 issue , err := IssueByNumber (client , repo , issueNumber )
372374 var idErr * IssuesDisabledError
373375 if errors .As (err , & idErr ) {
374- return fmt .Errorf ("issues disabled for %s" , ghrepo .FullName (repo ))
376+ return false , fmt .Errorf ("issues disabled for %s" , ghrepo .FullName (repo ))
375377 } else if err != nil {
376- return fmt .Errorf ("failed to find issue #%d: %w" , issueNumber , err )
378+ return false , fmt .Errorf ("failed to find issue #%d: %w" , issueNumber , err )
379+ }
380+
381+ if issue .Closed {
382+ return true , nil
377383 }
378384
379385 var mutation struct {
@@ -392,8 +398,8 @@ func IssueClose(client *Client, repo ghrepo.Interface, issueNumber int) error {
392398 err = v4 .Mutate (context .Background (), & mutation , input , nil )
393399
394400 if err != nil {
395- return err
401+ return false , err
396402 }
397403
398- return nil
404+ return false , nil
399405}
0 commit comments