@@ -49,63 +49,39 @@ param(
4949 [string ]$PRBody = $PRTitle ,
5050
5151 [Parameter (Mandatory = $false )]
52- [string ]$PRLabels ,
53-
54- [Parameter (Mandatory = $false )]
55- [string ]$UserReviewers ,
56-
57- [Parameter (Mandatory = $false )]
58- [string ]$TeamReviewers ,
59-
60- [Parameter (Mandatory = $false )]
61- [string ]$Assignees
52+ [string ]$PRLabels
6253)
6354
6455$headers = @ {
6556 Authorization = " bearer $AuthToken "
6657}
67- $baseURI = " https://api.github.com/repos"
68- function SplitMembers ($membersString )
69- {
70- return @ ($membersString.Split (" ," ) | % { $_.Trim () } | ? { return $_ })
71- }
7258
73- function InvokeGitHubAPI ($apiURI , $method , $body ) {
74- $resp = Invoke-RestMethod - Method $method - Headers $headers - Body ($body | ConvertTo-Json ) - Uri $apiURI - MaximumRetryCount 3
75- Write-Host -f green " These members have been added to: https://github.com/$RepoOwner /$RepoName /pull/$prNumber "
76- ($body | Format-List | Write-Output )
77- $resp | Write-Verbose
78- }
59+ $query = " state=open&head=${PROwner} :${PRBranch} &base=${BaseBranch} "
7960
80- function AddReviewers ($prNumber , $users , $teams ) {
81- $uri = " $baseURI /$RepoOwner /$RepoName /pulls/$prNumber /requested_reviewers"
82- $userAdditions = SplitMembers - membersString $users
83- $teamAdditions = SplitMembers - membersString $teams
84- $postResp = @ {}
85- if ($userAdditions ) {
86- $postResp [" reviewers" ] = @ ($userAdditions )
87- }
88- if ($teamAdditions ) {
89- $postResp [" team_reviewers" ] = @ ($teamAdditions )
61+ function AddLabels ([int ] $prNumber , [string ] $prLabelString )
62+ {
63+ # Adding labels to the pr.
64+ if (-not $prLabelString ) {
65+ Write-Verbose " There are no labels added to the PR."
66+ return
9067 }
91- return InvokeGitHubAPI - apiURI $uri - method ' Post' - body $postResp
92- }
9368
94- function AddLabelsAndOrAssignees ($prNumber , $labels , $assignees ) {
95- $uri = " $baseURI /$RepoOwner /$RepoName /issues/$prNumber "
96- $labelAdditions = SplitMembers - membersString $labels
97- $assigneeAdditions = SplitMembers - membersString $assignees
98- $postResp = @ {}
99- if ($assigneeAdditions ) {
100- $postResp [" assignees" ] = @ ($assigneeAdditions )
69+ # Parse the labels from string to array
70+ $prLabelArray = @ ($prLabelString.Split (" ," ) | % { $_.Trim () } | ? { return $_ })
71+ $prLabelUri = " https://api.github.com/repos/$RepoOwner /$RepoName /issues/$prNumber "
72+ $labelRequestData = @ {
73+ labels = $prLabelArray
10174 }
102- if ($labelAdditions ) {
103- $postResp [" labels" ] = @ ($labelAdditions )
75+ try {
76+ $resp = Invoke-RestMethod - Method PATCH - Headers $headers $prLabelUri - Body ($labelRequestData | ConvertTo-Json )
77+ }
78+ catch {
79+ Write-Error " Invoke-RestMethod $prLabelUri failed with exception:`n $_ "
10480 }
105- return InvokeGitHubAPI - apiURI $uri - method ' Post' - body $postResp
106- }
10781
108- $query = " state=open&head=${PROwner} :${PRBranch} &base=${BaseBranch} "
82+ $resp | Write-Verbose
83+ Write-Host -f green " Label(s) [$prLabelArray ] added to pull request: https://github.com/$RepoOwner /$RepoName /pull/$prNumber "
84+ }
10985
11086try {
11187 $resp = Invoke-RestMethod - Headers $headers " https://api.github.com/repos/$RepoOwner /$RepoName /pulls?$query "
@@ -117,18 +93,11 @@ catch {
11793$resp | Write-Verbose
11894
11995if ($resp.Count -gt 0 ) {
120- try {
12196 Write-Host -f green " Pull request already exists $ ( $resp [0 ].html_url) "
12297
12398 # setting variable to reference the pull request by number
12499 Write-Host " ##vso[task.setvariable variable=Submitted.PullRequest.Number]$ ( $resp [0 ].number) "
125- AddReviewers - prNumber $resp [0 ].number - users $UserReviewers - teams $TeamReviewers
126- AddLabelsAndOrAssignees - prNumber $resp [0 ].number - labels $PRLabels - assignees $Assignees
127- }
128- catch {
129- Write-Error " Call to GitHub API failed with exception:`n $_ "
130- exit 1
131- }
100+ AddLabels $resp [0 ].number $PRLabels
132101}
133102else {
134103 $data = @ {
@@ -143,17 +112,17 @@ else {
143112 $resp = Invoke-RestMethod - Method POST - Headers $headers `
144113 " https://api.github.com/repos/$RepoOwner /$RepoName /pulls" `
145114 - Body ($data | ConvertTo-Json )
146-
147- $resp | Write-Verbose
148- Write-Host -f green " Pull request created https://github.com/$RepoOwner /$RepoName /pull/$ ( $resp.number ) "
149-
150- # setting variable to reference the pull request by number
151- Write-Host " ##vso[task.setvariable variable=Submitted.PullRequest.Number]$ ( $resp.number ) "
152- AddReviewers - prNumber $resp.number - users $UserReviewers - teams $TeamReviewers
153- AddLabelsAndOrAssignees - prNumber $resp.number - labels $PRLabels - assignees $Assignees
154115 }
155116 catch {
156- Write-Error " Call to GitHub API failed with exception:`n $_ "
117+ Write-Error " Invoke-RestMethod [https://api.github.com/repos/ $RepoOwner / $RepoName /pulls] failed with exception:`n $_ "
157118 exit 1
158119 }
159- }
120+
121+ $resp | Write-Verbose
122+ Write-Host -f green " Pull request created https://github.com/$RepoOwner /$RepoName /pull/$ ( $resp.number ) "
123+
124+ # setting variable to reference the pull request by number
125+ Write-Host " ##vso[task.setvariable variable=Submitted.PullRequest.Number]$ ( $resp.number ) "
126+
127+ AddLabels $resp.number $PRLabels
128+ }
0 commit comments