@@ -49,63 +49,39 @@ param(
49
49
[string ]$PRBody = $PRTitle ,
50
50
51
51
[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
62
53
)
63
54
64
55
$headers = @ {
65
56
Authorization = " bearer $AuthToken "
66
57
}
67
- $baseURI = " https://api.github.com/repos"
68
- function SplitMembers ($membersString )
69
- {
70
- return @ ($membersString.Split (" ," ) | % { $_.Trim () } | ? { return $_ })
71
- }
72
58
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} "
79
60
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
90
67
}
91
- return InvokeGitHubAPI - apiURI $uri - method ' Post' - body $postResp
92
- }
93
68
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
101
74
}
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 $_ "
104
80
}
105
- return InvokeGitHubAPI - apiURI $uri - method ' Post' - body $postResp
106
- }
107
81
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
+ }
109
85
110
86
try {
111
87
$resp = Invoke-RestMethod - Headers $headers " https://api.github.com/repos/$RepoOwner /$RepoName /pulls?$query "
@@ -117,18 +93,11 @@ catch {
117
93
$resp | Write-Verbose
118
94
119
95
if ($resp.Count -gt 0 ) {
120
- try {
121
96
Write-Host -f green " Pull request already exists $ ( $resp [0 ].html_url) "
122
97
123
98
# setting variable to reference the pull request by number
124
99
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
132
101
}
133
102
else {
134
103
$data = @ {
@@ -143,17 +112,17 @@ else {
143
112
$resp = Invoke-RestMethod - Method POST - Headers $headers `
144
113
" https://api.github.com/repos/$RepoOwner /$RepoName /pulls" `
145
114
- 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
154
115
}
155
116
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 $_ "
157
118
exit 1
158
119
}
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