Public/Xpand/Pop-XafPackage.ps1
function Pop-XafPackage{ [CmdLetTag()] param( [parameter(Mandatory)] [string]$PackageSource, [parameter(Mandatory)] [version]$Version, [string]$OutputFolder=(Get-NugetInstallationFolder GlobalPackagesFolder) ) $existingPackages=Get-ChildItem $OutputFolder DevExpress*$dxVersion*.nupkg -Recurse|ConvertTo-PackageObject $a = @{ Source = $PackageSource Id=$null Recurse=$true FilterRegex="DevExpress" } $m=Get-NugetPackageSearchMetadata -Source $env:DxFeed | Where-Object{ $id=$_.Identity.Id !("de","es","ja","ru"|Where-Object{ $id -like "*.$_"}) -and $id -notmatch "\.wpf\.|\.xamarinforms\.|\.web\.mvc|\.WindowsDesktop\." } $existingMetadata=(($m|ForEach-Object{ [PSCustomObject]@{ Id = $_.Identity.Id Version=$_.Identity.Version.OriginalVersion } }))+(($m.dependencySets.packages|Sort-Object Id -Unique|Where-Object{$_.id -notin $m.Identity.id -and $_.id -match "DevExpress"})|ForEach-Object{ [PSCustomObject]@{ Id = $_.Id Version=$_.versionrange.maxversion.originalversion } }) $metadata=$existingMetadata|ForEach-Object{ $pVersion=(Get-VersionPart $_.Version Build) if ($pVersion -in $Version){ $p=$_ if ((!$existingPackages -or !($existingPackages|Where-Object{$_.id -eq $p.id -and $_.version -eq $pVersion}))){ $_ } } } if ($metadata){ $metadata=$metadata|Invoke-Parallel -ActivityName "Downloading XAF packages" -VariablesToImport @("PackageSource","OutputFolder") -LimitConcurrency ([System.Environment]::ProcessorCount) -Script{ Get-NugetPackage $_.Id -Source $PackageSource -ResultType DownloadResults -OutputFolder $OutputFolder } $metadata.PackageStream.name|Get-Item|ConvertTo-PackageObject } else { $existingMetadata } } |