ps/Modules/Alkami.PowerShell.Choco/Public/Test-PackageHasDatabaseConfigFile.ps1
2023-05-30 22:51:22 -07:00

70 lines
2.1 KiB
PowerShell

function Test-PackageHasDatabaseConfigFile {
<#
.SYNOPSIS
Returns true if the given package contains a DatabaseConfig.ps1 file.
.PARAMETER FeedSource
Source feed used to look up the package by
.PARAMETER Name
Package name to lookup
.PARAMETER Version
Package version to lookup
.PARAMETER PackageFiles
List of packages from previously retrieved Proget results
Array of objects have the shape: @( { fullpath=; parentFullPath=; name=; isDirectory; } )
.PARAMETER Credential
Credential used for accessing 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 -ne 'ProvidedPackageFiles') {
if ($PSCmdlet.ParameterSetName -eq 'RawArgs') {
$Package = @{
Feed = @{
Source = $FeedSource
}
Name = $Name
Version = $Version
}
}
Write-Host "$logLead : No package list provided, fetching from remote server"
$PackageFiles = Get-PackageFileListV2 -Package $Package -Credential $Credential
}
$validDatabaseConfigFilenames = Get-ValidPackageDatabaseConfigFilenames
foreach ($filename in $validDatabaseConfigFilenames) {
# 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
}