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

62 lines
2.0 KiB
PowerShell
Raw Permalink Normal View History

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