ps/Modules/Alkami.PowerShell.Choco/Public/Get-PackageAlkamiManifestV2.ps1

70 lines
2.3 KiB
PowerShell
Raw Normal View History

2023-05-30 22:51:22 -07:00
function Get-PackageAlkamiManifestV2 {
<#
.SYNOPSIS
Returns the AlkamiManifest content for the given package if it's found in Proget
.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 Package
[Object] Known package object with properties as { Feed={ Source=; Name=; } Name=; Version=; }
.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 = $false)]
[PSCredential]$Credential = $null
)
## TODO: Can this pull from the local filesystem if it exists?
## This would let us fetch faster if the versions match as we could avoid network hops.
$loglead = Get-LogLeadName
if ($PSCmdlet.ParameterSetName -eq 'Package') {
$FeedSource = $Package.Feed.Source
$Name = $Package.Name
$Version = $Package.Version
}
Write-Verbose "$loglead : Querying for Alkami manifest from proget for package [$Name]"
$splatVar = @{
FeedSource = $FeedSource
Name = $Name
Version = $Version
Credential = $Credential
PackagePath = "" #filled in below
}
foreach($validManifestFilename in (Get-ValidPackageManifestFilenames)) {
$splatVar.PackagePath = $validManifestFilename
$result = (Get-PackageFileV2 @splatVar)
if (![string]::IsNullOrWhiteSpace($result)) {
return (Get-PackageManifest -RawContent $result -PackageName $Name -ManifestSource "$FeedSource $Name $Version")
}
}
Write-Host "$logLead : No manifest found in Proget for [$Name]"
return $null
}