Private/Test-RepoDescription.ps1

<#
.SYNOPSIS
Valida que una descripción de metadata de repositorio cumple con el schema.
 
.DESCRIPTION
Prueba una cadena contra el regex del METADATA_SCHEMA y verifica valores de enum.
Retorna $true si es válida, $false si no.
 
.PARAMETER Description
La cadena de metadata a validar.
 
.OUTPUTS
[bool]
 
.EXAMPLE
Test-RepoDescription "type:flutter-web|stack:dart|deploy:v2.30.23|model:legacy"
# True
#>

function Test-RepoDescription {
    [CmdletBinding()]
    [OutputType([bool])]
    param(
        [Parameter(Mandatory, ValueFromPipeline)]
        [AllowEmptyString()]
        [string]$Description
    )

    process {
        if ([string]::IsNullOrWhiteSpace($Description)) {
            return $false
        }

        $regex = '^type:(flutter-web|flutter-apk|node-api|sqlserver-db|macss|tooling|documentation|archived|unknown)\|stack:(dart|javascript|typescript|sql|csharp|generic)\|deploy:(v\d+\.\d+\.\d+(?:-[a-zA-Z0-9.]+)?|none)\|model:(legacy|monorepo)(?:\|ci:(github-actions|manual|none))?(?:\|criticality:(critical|high|medium|low))?$'

        return [bool]($Description -match $regex)
    }
}