Modules/AzureDevOpsDsc.Common/Resources/Functions/Public/AzDoGitRepository/Remove-AzDoGitRepository.ps1
|
<#
.SYNOPSIS Removes a Git repository from an Azure DevOps project. .DESCRIPTION The Remove-AzDoGitRepository function removes a specified Git repository from a given Azure DevOps project. It checks the existence of the project and repository in the LiveProjects and LiveRepositories cache before attempting the removal. .PARAMETER ProjectName The name of the Azure DevOps project containing the repository to be removed. .PARAMETER RepositoryName The name of the repository to be removed. .PARAMETER SourceRepository An optional parameter specifying the source repository. .PARAMETER LookupResult An optional hashtable parameter for lookup results. .PARAMETER Ensure An optional parameter to ensure the state of the repository. .PARAMETER Force A switch parameter to force the removal of the repository. .EXAMPLE Remove-AzDoGitRepository -ProjectName "MyProject" -RepositoryName "MyRepo" -Force .NOTES This function relies on the existence of certain global variables and cache items. Ensure that the necessary cache items and global variables are properly set before invoking this function. #> Function Remove-AzDoGitRepository { [CmdletBinding()] [OutputType([System.Management.Automation.PSObject[]])] param ( [Parameter(Mandatory = $true)] [Alias('Name')] [System.String]$ProjectName, [Parameter(Mandatory = $true)] [Alias('Repository')] [System.String]$RepositoryName, [Parameter()] [Alias('Source')] [System.String]$SourceRepository, [Parameter()] [HashTable]$LookupResult, [Parameter()] [Ensure]$Ensure, [Parameter()] [System.Management.Automation.SwitchParameter] $Force ) Write-Verbose "[Remove-AzDoGitRepository] Removing repository '$($RepositoryName)' in project '$($ProjectName)'" $project = Resolve-AzDoProject -ProjectName $ProjectName if ($null -eq $project) { Write-Error "[Remove-AzDoGitRepository] Project '$($ProjectName)' not found. Skipping change." return } $repository = Get-CacheItem -Key "$ProjectName\$RepositoryName" -Type 'LiveRepositories' if ($null -eq $repository) { # Repository may have been created after the cache was built at init — fall back to a live lookup. $allRepos = List-DevOpsGitRepository -OrganizationName (Get-AzDoOrganizationName) -ProjectName $ProjectName $repository = $allRepos | Where-Object { $_.name -eq $RepositoryName } | Select-Object -First 1 } if ($null -eq $repository) { # Already absent — nothing to remove (desired state achieved). Write-Verbose "[Remove-AzDoGitRepository] Repository '$RepositoryName' not found; already absent." return } # Define parameters for removing the repository $params = @{ ApiUri = 'https://dev.azure.com/{0}/' -f (Get-AzDoOrganizationName) Project = $project Repository = $repository } # Create a new repository $value = Remove-GitRepository @params # Add the repository to the LiveRepositories cache and write to verbose log Remove-CacheItem -Key "$ProjectName\$RepositoryName" -Type 'LiveRepositories' Export-CacheObject -CacheType 'LiveRepositories' -Content $AzDoLiveRepositories Write-Verbose "[Remove-AzDoGitRepository] Added new group to LiveGroups cache with key: '$($value.Name)'" } |