Sync eng/common directory with azure-sdk-tools for PR 1088 (#775)
Sync eng/common directory with azure-sdk-tools for PR https://github.com/Azure/azure-sdk-tools/pull/1088 See [eng/common workflow](https://github.com/Azure/azure-sdk-tools/blob/master/eng/common/README.md#workflow)
This commit is contained in:
parent
b0e5d3d356
commit
33025d7b23
44
eng/common/scripts/Delete-RemoteBranches.ps1
Normal file
44
eng/common/scripts/Delete-RemoteBranches.ps1
Normal file
@ -0,0 +1,44 @@
|
||||
param(
|
||||
$RepoOwner,
|
||||
$RepoName,
|
||||
$BranchPrefix,
|
||||
$AuthToken
|
||||
)
|
||||
|
||||
. "${PSScriptRoot}\common.ps1"
|
||||
|
||||
LogDebug "Operating on Repo [ $RepoName ]"
|
||||
try{
|
||||
$branches = (List-References -RepoOwner $RepoOwner -RepoName $RepoName -Ref "heads/$BranchPrefix").ref
|
||||
}
|
||||
catch {
|
||||
LogError "List-References failed with exception:`n$_"
|
||||
exit 1
|
||||
}
|
||||
|
||||
foreach ($branch in $branches)
|
||||
{
|
||||
try {
|
||||
$branchName = $branch.Replace("refs/heads/","")
|
||||
$head = "${RepoOwner}/${RepoName}:${branchName}"
|
||||
LogDebug "Operating on branch [ $branchName ]"
|
||||
$pullRequests = List-PullRequests -RepoOwner $RepoOwner -RepoName $RepoName -head $head
|
||||
}
|
||||
catch
|
||||
{
|
||||
LogError "List-PullRequests failed with exception:`n$_"
|
||||
exit 1
|
||||
}
|
||||
|
||||
if ($pullRequests.Count -eq 0)
|
||||
{
|
||||
LogDebug "Branch [ $branchName ] in repo [ $RepoName ] has no associated Pull Request. Deleting Branch"
|
||||
try{
|
||||
Delete-References -RepoOwner $RepoOwner -RepoName $RepoName -Ref ($branch.Remove(0,5)) -AuthToken $AuthToken
|
||||
}
|
||||
catch {
|
||||
LogError "Delete-References failed with exception:`n$_"
|
||||
exit 1
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -47,6 +47,24 @@ function Invoke-GitHubAPIPatch {
|
||||
return $resp
|
||||
}
|
||||
|
||||
function Invoke-GitHubAPIDelete {
|
||||
param (
|
||||
[Parameter(Mandatory = $true)]
|
||||
$apiURI,
|
||||
[Parameter(Mandatory = $true)]
|
||||
$token
|
||||
)
|
||||
|
||||
$resp = Invoke-RestMethod `
|
||||
-Method DELETE `
|
||||
-Uri $apiURI `
|
||||
-Headers (Get-GitHubHeaders -token $token) `
|
||||
-MaximumRetryCount 3
|
||||
|
||||
return $resp
|
||||
}
|
||||
|
||||
|
||||
function Invoke-GitHubAPIGet {
|
||||
param (
|
||||
[Parameter(Mandatory = $true)]
|
||||
@ -105,6 +123,27 @@ function List-PullRequests {
|
||||
return Invoke-GitHubAPIGet -apiURI $uri
|
||||
}
|
||||
|
||||
#
|
||||
<#
|
||||
.PARAMETER Ref
|
||||
Ref to search for
|
||||
Pass 'heads/<branchame> ,tags/<tag name>, or nothing
|
||||
#>
|
||||
function List-References {
|
||||
param (
|
||||
[Parameter(Mandatory = $true)]
|
||||
$RepoOwner,
|
||||
[Parameter(Mandatory = $true)]
|
||||
$RepoName,
|
||||
$Ref
|
||||
)
|
||||
|
||||
$uri = "$GithubAPIBaseURI/$RepoOwner/$RepoName/git/matching-refs/"
|
||||
if ($Ref) { $uri += "$Ref" }
|
||||
|
||||
return Invoke-GitHubAPIGet -apiURI $uri
|
||||
}
|
||||
|
||||
function Add-IssueComment {
|
||||
param (
|
||||
[Parameter(Mandatory = $true)]
|
||||
@ -229,4 +268,27 @@ function Update-Issue {
|
||||
}
|
||||
|
||||
return Invoke-GitHubAPIPatch -apiURI $uri -body $parameters -token $AuthToken
|
||||
}
|
||||
|
||||
function Delete-References {
|
||||
param (
|
||||
[Parameter(Mandatory = $true)]
|
||||
$RepoOwner,
|
||||
[Parameter(Mandatory = $true)]
|
||||
$RepoName,
|
||||
[ValidateNotNullOrEmpty()]
|
||||
[Parameter(Mandatory = $true)]
|
||||
$Ref,
|
||||
[Parameter(Mandatory = $true)]
|
||||
$AuthToken
|
||||
)
|
||||
|
||||
if ($Ref.Trim().Length -eq 0)
|
||||
{
|
||||
throw "You must supply a valid 'Ref' Parameter to 'Delete-Reference'."
|
||||
}
|
||||
|
||||
$uri = "$GithubAPIBaseURI/$RepoOwner/$RepoName/git/refs/$Ref"
|
||||
|
||||
return Invoke-GitHubAPIDelete -apiURI $uri -token $AuthToken
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user