Skip to content

Commit b09f589

Browse files
committed
feat: enhance update pull request functionality with reviewers support
1 parent 5c85a09 commit b09f589

File tree

3 files changed

+26
-19
lines changed

3 files changed

+26
-19
lines changed

pkg/github/__toolsnaps__/update_pull_request.snap

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,13 @@
3030
"description": "Repository name",
3131
"type": "string"
3232
},
33+
"reviewers": {
34+
"description": "GitHub usernames to request reviews from",
35+
"items": {
36+
"type": "string"
37+
},
38+
"type": "array"
39+
},
3340
"state": {
3441
"description": "New state",
3542
"enum": [

pkg/github/pullrequests.go

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -299,13 +299,9 @@ func UpdatePullRequest(getClient GetClientFn, t translations.TranslationHelperFu
299299
}
300300

301301
// Handle reviewers separately
302-
var reviewers []string
303-
if reviewersArr, ok := request.Params.Arguments["reviewers"].([]interface{}); ok && len(reviewersArr) > 0 {
304-
for _, reviewer := range reviewersArr {
305-
if reviewerStr, ok := reviewer.(string); ok {
306-
reviewers = append(reviewers, reviewerStr)
307-
}
308-
}
302+
reviewers, err := OptionalStringArrayParam(request, "reviewers")
303+
if err != nil {
304+
return mcp.NewToolResultError(err.Error()), nil
309305
}
310306

311307
// Create the GitHub client
@@ -322,7 +318,11 @@ func UpdatePullRequest(getClient GetClientFn, t translations.TranslationHelperFu
322318
var ghResp *github.Response
323319
pr, ghResp, err = client.PullRequests.Edit(ctx, owner, repo, pullNumber, update)
324320
if err != nil {
325-
return nil, fmt.Errorf("failed to update pull request: %w", err)
321+
return ghErrors.NewGitHubAPIErrorResponse(ctx,
322+
"failed to update pull request",
323+
ghResp,
324+
err,
325+
), nil
326326
}
327327
resp = ghResp.Response
328328
defer func() {
@@ -343,7 +343,11 @@ func UpdatePullRequest(getClient GetClientFn, t translations.TranslationHelperFu
343343
var ghResp *github.Response
344344
pr, ghResp, err = client.PullRequests.Get(ctx, owner, repo, pullNumber)
345345
if err != nil {
346-
return nil, fmt.Errorf("failed to get pull request: %w", err)
346+
return ghErrors.NewGitHubAPIErrorResponse(ctx,
347+
"failed to get pull request",
348+
ghResp,
349+
err,
350+
), nil
347351
}
348352
resp = ghResp.Response
349353
defer func() {
@@ -359,14 +363,6 @@ func UpdatePullRequest(getClient GetClientFn, t translations.TranslationHelperFu
359363
}
360364
return mcp.NewToolResultError(fmt.Sprintf("failed to get pull request: %s", string(body))), nil
361365
}
362-
363-
pr, resp, err := client.PullRequests.Edit(ctx, owner, repo, pullNumber, update)
364-
if err != nil {
365-
return ghErrors.NewGitHubAPIErrorResponse(ctx,
366-
"failed to update pull request",
367-
resp,
368-
err,
369-
), nil
370366
}
371367

372368
// Add reviewers if specified
@@ -378,7 +374,11 @@ func UpdatePullRequest(getClient GetClientFn, t translations.TranslationHelperFu
378374
// Use the direct result of RequestReviewers which includes the requested reviewers
379375
updatedPR, resp, err := client.PullRequests.RequestReviewers(ctx, owner, repo, pullNumber, reviewersRequest)
380376
if err != nil {
381-
return nil, fmt.Errorf("failed to request reviewers: %w", err)
377+
return ghErrors.NewGitHubAPIErrorResponse(ctx,
378+
"failed to request reviewers",
379+
resp,
380+
err,
381+
), nil
382382
}
383383
defer func() {
384384
if resp != nil && resp.Body != nil {

pkg/github/pullrequests_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -390,7 +390,7 @@ func Test_UpdatePullRequest(t *testing.T) {
390390
}
391391

392392
// Check reviewers if they exist in the expected PR
393-
if tc.expectedPR.RequestedReviewers != nil && len(tc.expectedPR.RequestedReviewers) > 0 {
393+
if len(tc.expectedPR.RequestedReviewers) > 0 {
394394
assert.NotNil(t, returnedPR.RequestedReviewers)
395395
assert.Equal(t, len(tc.expectedPR.RequestedReviewers), len(returnedPR.RequestedReviewers))
396396

0 commit comments

Comments
 (0)