Functions/Public/Remove-GitHubGitRef.ps1
function Remove-GitHubGitRef { <# .SYNOPSIS Deletes a GitHub git ref (a branch, a commit, etc.) .EXAMPLE Remove-GitHubGitRef -Owner foo -RepositoryName bar -Ref heads/my-branch #> [CmdletBinding(SupportsShouldProcess)] param ( [Parameter(Mandatory, ValueFromPipelineByPropertyName)] [string] $Owner, [Parameter(Mandatory, ValueFromPipelineByPropertyName)] [ValidateNotNullOrEmpty()] [ValidatePattern('^[\w-\.]+$')] [Alias('Repository')] [string] $RepositoryName, [Parameter(Mandatory, ParameterSetName = 'Ref')] [ValidateNotNullOrEmpty()] [string] $Ref, [Parameter(Mandatory, ValueFromPipelineByPropertyName, ParameterSetName = 'HeadRef')] [ValidateNotNullOrEmpty()] [Alias('FriendlyName')] [string] $HeadRef, # Optional base URL of the GitHub API, for example "https://ghe.mycompany.com/api/v3/" (including the trailing slash). # Defaults to "https://api.github.com" [Uri] $BaseUri = [Uri]::new('https://api.github.com'), [Security.SecureString] $Token = (Get-GitHubToken) ) process { if ($HeadRef) { $Ref = "heads/$HeadRef" } $shouldProcessCaption = "Deleting GitHub git ref" $shouldProcessDescription = "Deleting the GitHub git ref `e[1m$Name`e[0m in the repository `e[1m$Owner/$RepositoryName`e[0m." $shouldProcessWarning = "Do you want to create the GitHub git ref `e[1m$Name`e[0m in the repository `e[1m$Owner/$RepositoryName`e[0m?" if ($PSCmdlet.ShouldProcess($shouldProcessDescription, $shouldProcessWarning, $shouldProcessCaption)) { Invoke-GitHubApi -Method DELETE "repos/$Owner/$RepositoryName/git/refs/$Ref" -BaseUri $BaseUri -Token $Token Write-Information "Removed GitHub git ref `e[1m$Ref`e[0m" } } } |