function Test-IsPackageMicroserviceV2 { <# .SYNOPSIS Returns true if the given package is a microservice. .PARAMETER NuspecXmlObject The nuspec object to test against .PARAMETER Package [object] The package to check #> [CmdletBinding()] Param( [Alias("nuspec")] [Parameter(Mandatory = $false)] # not required: for unit testing purposes because we test in a invoke-parallel we can't. Also it's not really super required. Something else would've failed first. [object]$NuspecXmlObject, [Parameter(Mandatory = $true)] [ValidateNotNull()] [object]$Package ) $loglead = (Get-LogLeadName) $name = $Package.Name $version = $Package.Version # Return false if the package is an installer. if(Test-IsPackageInstallerV2 -packageName $name) { Write-Verbose "$logLead : Determined that package $name|$version is an installer package" return $false } # Are there any files that match the path pattern # The closest Linq .Any() match is .Count -gt 0, so we do that # Return false on denylisted microservices. if ($_MicroserviceDenyList.Where({$name -like $_}).Count -gt 0) { Write-Verbose "$logLead : Determined that package $name|$version is universally denied as a service" return $false } # Return true on allowlisted microservices. if ($_MicroserviceAllowList.Where({$name -like $_}).Count -gt 0) { Write-Verbose "$logLead : Determined that package $name|$version is universally allowed as a service" return $true } $arguments = @{ DependencyList = $_MicroDependencies NuspecXmlObject = $NuspecXmlObject } $isMicroservice = (Test-PackageHasDependencyV2 @arguments) # Write friendly verbose text. $microText = if($isMicroservice) { "is" } else { "is not" } Write-Verbose "$loglead : Determined that package $name|$version $microText a microservice" return $isMicroservice }