diff --git a/eng/common/scripts/Submit-PullRequest.ps1 b/eng/common/scripts/Submit-PullRequest.ps1 index f9e43478f97c5..70edecbcaa83e 100644 --- a/eng/common/scripts/Submit-PullRequest.ps1 +++ b/eng/common/scripts/Submit-PullRequest.ps1 @@ -18,91 +18,53 @@ A personal access token #> [CmdletBinding(SupportsShouldProcess = $true)] param( - [Parameter(Mandatory = $true)] - $RepoOwner, + [Parameter(Mandatory = $true)] + $RepoOwner, - [Parameter(Mandatory = $true)] - $RepoName, + [Parameter(Mandatory = $true)] + $RepoName, - [Parameter(Mandatory = $true)] - $BaseBranch, + [Parameter(Mandatory = $true)] + $BaseBranch, - [Parameter(Mandatory = $true)] - $PROwner, + [Parameter(Mandatory = $true)] + $PROwner, - [Parameter(Mandatory = $true)] - $PRBranch, + [Parameter(Mandatory = $true)] + $PRBranch, - [Parameter(Mandatory = $true)] - $AuthToken, + [Parameter(Mandatory = $true)] + $AuthToken, - [Parameter(Mandatory = $true)] - $PRTitle, - $PRBody = $PRTitle + [Parameter(Mandatory = $true)] + $PRTitle, + $PRBody = $PRTitle ) -$ErrorActionPreference = 'stop' -Set-StrictMode -Version 1 -[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 +$query = "state=open&head=${PROwner}:${PRBranch}&base=${BaseBranch}" -$headers = @{ - Authorization = "bearer $AuthToken" -} - -$query = 'query ($repoOwner: String!, $repoName: String!, $baseRefName: String!) { - repository(owner: $repoOwner, name: $repoName) { - pullRequests(baseRefName: $baseRefName, states: OPEN, first: 100) { - totalCount - nodes { - number - headRef { - name - repository { - name - owner { - login - } - } - } - } - } - } - }' - - -$data = @{ - query = $query - variables = @{ - repoOwner = $RepoOwner - repoName = $RepoName - baseRefName = $BaseBranch - } -} - -$resp = Invoke-RestMethod -Method Post -Headers $headers ` - https://api.github.com/graphql ` - -Body ($data | ConvertTo-Json) +$resp = Invoke-RestMethod "https://api.github.com/repos/$RepoOwner/$RepoName/pulls?$query" $resp | Write-Verbose -$matchingPr = $resp.data.repository.pullRequests.nodes ` - | ? { $_.headRef.name -eq $PRBranch -and $_.headRef.repository.owner.login -eq $PROwner } ` - | select -First 1 - -if ($matchingPr) { - Write-Host -f green "Pull request already exists https://github.com/$RepoOwner/$RepoName/pull/$($matchingPr.number)" +if ($resp.Count -gt 0) { + Write-Host -f green "Pull request already exists $($resp[0].html_url)" } else { - $data = @{ - title = $PRTitle - head = "${PROwner}:${PRBranch}" - base = $BaseBranch - body = $PRBody - maintainer_can_modify = $true - } - - $resp = Invoke-RestMethod -Method POST -Headers $headers ` - https://api.github.com/repos/$RepoOwner/$RepoName/pulls ` - -Body ($data | ConvertTo-Json) - $resp | Write-Verbose - Write-Host -f green "Pull request created https://github.com/$RepoOwner/$RepoName/pull/$($resp.number)" + $headers = @{ + Authorization = "bearer $AuthToken" + } + + $data = @{ + title = $PRTitle + head = "${PROwner}:${PRBranch}" + base = $BaseBranch + body = $PRBody + maintainer_can_modify = $true + } + + $resp = Invoke-RestMethod -Method POST -Headers $headers ` + https://api.github.com/repos/$RepoOwner/$RepoName/pulls ` + -Body ($data | ConvertTo-Json) + $resp | Write-Verbose + Write-Host -f green "Pull request created https://github.com/$RepoOwner/$RepoName/pull/$($resp.number)" }