function Test-PackageHasAlkamiManifestV2 { <# .SYNOPSIS Returns true if the given package contains an Alkami manifest. .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 } foreach ($filename in (Get-ValidPackageManifestFilenames)) { # The .name property is always just the rightmost filename part of the record if ($PackageFiles.Where({$_.name -eq $filename -and !$_.fullPath.StartsWith("src/")}).Where({$_}).Count -gt 0) { return $true } } return $false }