Private/Get-DreepyVariableGroupsFromBuildDefinition.ps1

Function Get-DreepyVariableGroupsFromBuildDefinition{
    param(
    [parameter(Mandatory = $false)][PSCustomObject]$buildDefinition,
    [parameter(Mandatory = $false)][string[]]$variableGroupNames
    )

    $buildHash = $buildDefinition | ConvertFrom-Json -AsHashtable
    if ($PSBoundParameters.ContainsKey('variableGroupNames') -eq $false) {
        $variableGroups = $buildHash.variableGroups
    }
    else {
        $variableGroups = @()
        for ($i = 0; $i -lt $variableGroupNames.length; $i++) {
            $variableGroup = $buildHash.variableGroups | Where-Object { $_.name -eq $variableGroupNames[$i] }
            $variableGroups += $variableGroup
        }
        if ($variableGroups.Count -eq 0) {
            Write-Error "No variable groups found!"
            Throw
        }
    }
    Return $variableGroups
}