79 lines
2.5 KiB
PowerShell
79 lines
2.5 KiB
PowerShell
|
function Get-PackageNuspecXmlV2 {
|
|||
|
<#
|
|||
|
.SYNOPSIS
|
|||
|
Returns the .nuspec XML object for the given package.
|
|||
|
|
|||
|
.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
|
|||
|
}
|
|||
|
|
|||
|
$splatVar = @{
|
|||
|
FeedSource = $FeedSource
|
|||
|
Name = $Name
|
|||
|
Version = $Version
|
|||
|
Credential = $Credential
|
|||
|
|
|||
|
PackagePath = "$Name.nuspec"
|
|||
|
}
|
|||
|
|
|||
|
# See if the nuspec is cached in the session.
|
|||
|
$existsInCache = ($Script:GetPackageNuspecXmlCacheName -eq $Name) -and
|
|||
|
($Script:GetPackageNuspecXmlCacheSource -eq $FeedSource) -and
|
|||
|
($Script:GetPackageNuspecXmlCacheVersion -eq $Version)
|
|||
|
|
|||
|
if($existsInCache -and ($null -ne $Script:GetPackageNuspecXmlCacheNuspec)) {
|
|||
|
Write-Verbose "$loglead : Nuspec for $name|$version is cached. Returning cached version."
|
|||
|
return $Script:GetPackageNuspecXmlCacheNuspec
|
|||
|
}
|
|||
|
|
|||
|
# Query for the nuspec from Proget.
|
|||
|
Write-Verbose "$loglead : Nuspec for $name|$version is not cached. Querying for nuspec from proget."
|
|||
|
[xml]$result = [xml](Get-PackageFile @splatVar)
|
|||
|
|
|||
|
# Cache the nuspec.
|
|||
|
$Script:GetPackageNuspecXmlCacheName = $Name
|
|||
|
$Script:GetPackageNuspecXmlCacheSource = $FeedSource
|
|||
|
$Script:GetPackageNuspecXmlCacheVersion = $Version
|
|||
|
$Script:GetPackageNuspecXmlCacheNuspec = $result
|
|||
|
|
|||
|
return $result
|
|||
|
}
|