Optionally collect additonal metadata from the nuspec.

This commit is contained in:
Stephen Valdinger
2019-04-27 22:01:34 -04:00
parent c6405d3216
commit 548e40eaa5

View File

@@ -9,25 +9,40 @@ Function Get-ChocoPackageMetaData {
.PARAMETER ChocolateyPackage
The chocolatey package(s) you wish to extract data from
.PARAMETER AdditonalInformation
Return more information about the package than the default ID and Version
.EXAMPLE
Get-ChocoPackageMetaData -ChocolateyPackage C:\Packages\googlechrome.nupkg
.EXAMPLE
Get-ChocoPackageMetaData -ChocolateyPackage C:\Packages\googlechrome.nupkg -AdditionalInformation Owners,Description,ProjectUrl,Dependencies
.NOTES
Written by Stephen Valdinger of Chocolatey Software for Dan Franciscus
Dependencies work a little funny in how they get stuffed into the object. They come back as an object themselves, so special care must be taken to unroll them.
e.g.
Get-ChocoPackageMetaData -ChocolateyPackage C:\packages\googlechrome.nupkg -AdditionalInformation Dependencies | Select-Object -ExpandProperty Dependencies
#>
[cmdletBinding()]
Param(
[ValidateScript({Test-Path $_})]
[String[]]
$ChocolateyPackage
$ChocolateyPackage,
[Parameter()]
[String[]]
[ValidateSet('Authors','Description','ProjectUrl','Owners','Licenseurl','Iconurl','Dependencies')]
$AdditionalInformation
)
begin { $null = Add-Type -Assemblyname "System.IO.Compression.Filesystem" }
process {
Foreach($package in $ChocolateyPackage){
$obj = @{}
$obj = [ordered]@{}
$entry = [IO.Compression.Zipfile]::OpenRead($package).Entries |
Where-Object { $_.Name -match "nuspec" }
$stream = $entry.Open()
@@ -36,6 +51,19 @@ Function Get-ChocoPackageMetaData {
[xml]$xml = $text
$obj.Add("Name","$($xml.package.metadata.id)")
$obj.Add("Version","$($xml.package.metadata.version)")
Foreach($member in $AdditionalInformation){
if($member -eq 'Dependencies'){
$obj.Add("$member",$($xml.package.metadata.dependencies.dependency))
}
else{
$obj.Add("$member",$($xml.package.metadata.$($member)))
}
}
$reader.Close()
$stream.Close()
[pscustomobject]$obj