ps/Modules/Alkami.PowerShell.Choco/Public/Test-IsPackageMicroserviceV2.ps1

61 lines
1.9 KiB
PowerShell
Raw Permalink Normal View History

2023-05-30 22:51:22 -07:00
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
}