Modules/AzureDevOpsDsc.Common/Resources/Functions/Public/AzDoWIPTagHygiene/Remove-AzDoWIPTagHygiene.ps1

<#
.SYNOPSIS
Not supported - tag hygiene describes a check, not an object that can be removed.
 
.DESCRIPTION
There is nothing to remove: this resource does not create anything, it reconciles tags that
already exist. Ensure = 'Absent' has no meaning here, and is reported rather than silently
ignored so that a configuration expressing it is corrected rather than quietly doing nothing.
 
Deleting tags is a separate concern and belongs to AzDoWIPTags.
 
.PARAMETER ProjectName
The name of the Azure DevOps project.
 
.PARAMETER CanonicalTags
The approved tag vocabulary.
 
.PARAMETER Aliases
Explicit From/To mappings.
 
.PARAMETER MatchStrategy
'Exact', 'Fuzzy' or 'Both'.
 
.PARAMETER SimilarityThreshold
The minimum normalized similarity for a fuzzy match.
 
.PARAMETER MinimumTagLength
Tags shorter than this are never fuzzy-matched.
 
.PARAMETER ExcludedTags
Tags that are never touched.
 
.PARAMETER RemediationAction
'Report' or 'Merge'.
 
.PARAMETER MaxAutoCorrections
The safety cap on how many merges may be applied in one run.
 
.PARAMETER LookupResult
The lookup result from Get, supplied by the DSC base class.
 
.PARAMETER Ensure
The desired state, supplied by the DSC base class.
 
.PARAMETER Force
Forces the operation, supplied by the DSC base class.
 
.EXAMPLE
Remove-AzDoWIPTagHygiene -ProjectName 'Contoso' -CanonicalTags @('Bug')
#>

Function Remove-AzDoWIPTagHygiene
{
    [CmdletBinding()]
    [OutputType([System.Management.Automation.PSObject[]])]
    param
    (
        [Parameter(Mandatory = $true)]
        [Alias('Name')]
        [System.String]$ProjectName,

        [Parameter(Mandatory = $true)]
        [AllowEmptyCollection()]
        [Alias('WITTagList')]
        [System.String[]]$CanonicalTags,

        [Parameter()]
        [AllowEmptyCollection()]
        [HashTable[]]$Aliases,

        [Parameter()]
        [System.String]$MatchStrategy = 'Exact',

        [Parameter()]
        [System.Int32]$SimilarityThreshold = 85,

        [Parameter()]
        [System.Int32]$MinimumTagLength = 5,

        [Parameter()]
        [AllowEmptyCollection()]
        [System.String[]]$ExcludedTags,

        [Parameter()]
        [System.String]$RemediationAction = 'Report',

        [Parameter()]
        [System.Int32]$MaxAutoCorrections = 25,

        [Parameter()]
        [HashTable]$LookupResult,

        [Parameter()]
        [Ensure]$Ensure,

        [Parameter()]
        [System.Management.Automation.SwitchParameter]$Force
    )

    Write-Warning "[Remove-AzDoWIPTagHygiene] AzDoWIPTagHygiene does not support Ensure = 'Absent' - it reconciles existing tags rather than creating anything. No action taken. To remove tags, use AzDoWIPTags."
}