Functions/Public/Get-ADONugetRepositoryPackage.ps1
|
Function Get-ADONugetRepositoryPackage { <# .SYNOPSIS Request package information, list packages available, download / install package from an ADO Artifact Manager .DESCRIPTION Request package information, list packages available, download / install package from an ADO Artifact Manager .PARAMETER Action -Action [string] Validate Set : "install", "search" install : download / install locally a package in a specific version (last version by default) search : search a package based on keywords .PARAMETER PackageName -PackageName [string] name of the package To be used with Action parameter "info" and "install" .PARAMETER PackageSource -PackageSource [string] Name of your repository .PARAMETER PackageVersion -PackageVersion [switch] version of the package To be used with Action parameter "info" and "install" .PARAMETER OutputDirectory -OutputDirectory [string] install folder where package will be downloaded and extracted. If not set, current folder will be used To be used with Action parameter "install" .PARAMETER PackageSearchQuery -PackageSearchQuery [string] Nuget search query to find a package based on NuGet criteria. To be used with Action paramter "search" Nuget Search Query info : https://docs.microsoft.com/en-us/nuget/consume-packages/finding-and-choosing-packages#search-syntax .OUTPUTS TypeName : System.Collections.Hashtable .EXAMPLE Get-ADORepositoryPackage -Action install -PackageName myPackage -PackageVersion 1.0.0 -OutputDirectory c:\PackageInstall Install a package in a specific version .EXAMPLE Get-ADORepositoryPackage -Action search -PackageSearchQuery Sysmon Search for a package with a name like sysmon #> [cmdletbinding()] param( [parameter(Mandatory=$true,Position=0)] [ValidateSet("install","search")] [string]$Action, [parameter(Mandatory=$false,Position=1)] [ValidateNotNullOrEmpty()] [string]$PackageName, [parameter(Mandatory=$false,Position=3)] [ValidateNotNullOrEmpty()] [string]$PackageSource, [parameter(Mandatory=$false,Position=2)] [ValidateNotNullOrEmpty()] [string]$PackageVersion, [parameter(Mandatory=$false,Position=4)] [ValidateNotNullOrEmpty()] [string]$OutputDirectory, [parameter(Mandatory=$false,Position=5)] [ValidateNotNullOrEmpty()] [string]$PackageSearchQuery ) process { Test-ADONugetRepository | out-null if (!($PackageSource) -and ($global:ADONugetConfig.count -gt 1)) { throw "Please provide a valid Package Source using PackageSource Parameter" } elseif (!($PackageSource) -and ($global:ADONugetConfig.count -eq 1)) { $PackageSource = $global:ADONugetConfig.repositoryname } if (!($PackageVersion) -and $PackageName) { $AllPackageversion = Invoke-ADOAPI -SourceName $PackageSource -PackageAPI list | where-object {$_.name -eq $PackageName} $temppackageversion = $AllPackageversion[0].version $PackageVersion = (Invoke-ADOAPI -SourceName $PackageSource -NugetAPI metadata -PackageName $PackageName -PackageVersion $temppackageversion).items.upper if (!($PackageVersion)) { throw "Not able to find your Package version. Please Provide a valid Package Name and Version using PackageName and PackageVersion parameters" } } switch ($Action) { "install" { if (!($OutputDirectory)) { $OutputDirectory = Get-ScriptDirectory } Invoke-ADOAPI -SourceName $PackageSource -NugetAPI download -PackageName $PackageName -PackageVersion $PackageVersion -OutputDirectory $OutputDirectory } "search" { if (!($PackageSearchQuery)) { throw "Please use PackageSearchQuery parameter when using Search option of Action parameter" } $result = Invoke-ADOAPI -SourceName $PackageSource -NugetAPI query -PackageSearch $PackageSearchQuery if ($result.data) { $result.data } } } } } |