function Test-PackageHasInfrastructureMigrationsV2 { <# .SYNOPSIS Returns true if the given package contains Terraform infrastructure migrations. .PARAMETER FeedSource [string] Source feed used to look up the package by .PARAMETER Name [string] Package name to lookup .PARAMETER Version [string] Package version to lookup .PARAMETER PackageFiles [object[]] List of packages from the Proget results Array of objects have the shape: @{ fullpath=; parentFullPath=; name=; isDirectory; } .PARAMETER Credential [PSCredential] Credential used for talking to feeds as needed #> [CmdletBinding(DefaultParameterSetName='RawArgs')] Param( [Parameter(Mandatory = $true, ParameterSetName = 'RawArgs')] [string]$FeedSource, [Parameter(Mandatory = $true, ParameterSetName = 'RawArgs')] [string]$Name, [Parameter(Mandatory = $true, ParameterSetName = 'RawArgs')] [string]$Version, [Parameter(Mandatory = $true, ParameterSetName = 'Package')] [object]$Package, [Parameter(Mandatory=$true, ParameterSetName='ProvidedPackageFiles')] [object]$PackageFiles, [Parameter(Mandatory = $false)] [PSCredential]$Credential = $null ) $loglead = (Get-LogLeadName) if ($PSCmdlet.ParameterSetName -eq 'RawArgs') { $Package = @{ Feed = @{ Source = $FeedSource } Name = $Name Version = $Version } } else { $Name = $Package.Name $Version = $Package.Version } if($PSCmdlet.ParameterSetName -ne 'ProvidedPackageFiles') { Write-Host "$logLead : No package list provided, fetching from remote server" $PackageFiles = Get-PackageFileListV2 -Package $Package -Credential $Credential } # Are there any files that match the path pattern # The closest Linq .Any() match is .Count -gt 0, so we do that $terraformPathPattern = 'terraform/*' return (@($PackageFiles.fullPath -like $terraformPathPattern).Where({$_}).Count -gt 0) }