Private/Expand-EnvironmentConfig.ps1

function Expand-EnvironmentConfig {
    [CmdletBinding()]
    param (
        [Parameter(HelpMessage = "Enter the run config as parsed object")]
        [Alias("cfo")]
        [Object] $config
    )
    $result = ConvertTo-Yaml $config
    $resultOld = ""
    while (-not ($result -eq $resultOld))
    {
        $resultOld = $result
        foreach ($envVar in $config.environment)
        {
            $name   = $envVar.env
            $value  = $envVar.val
            Write-Verbose "Replacing placeholder for environment variable: $name with value: $value"
            $result = $result.Replace('${' + $name + '}', $value)
            Write-Verbose "Result = $result"
        }
        $config = ConvertFrom-Yaml -Yaml $result
    }

    return $config
}