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 .PARAMETER ChocolateyPackage
The chocolatey package(s) you wish to extract data from 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 .EXAMPLE
Get-ChocoPackageMetaData -ChocolateyPackage C:\Packages\googlechrome.nupkg Get-ChocoPackageMetaData -ChocolateyPackage C:\Packages\googlechrome.nupkg
.EXAMPLE
Get-ChocoPackageMetaData -ChocolateyPackage C:\Packages\googlechrome.nupkg -AdditionalInformation Owners,Description,ProjectUrl,Dependencies
.NOTES .NOTES
Written by Stephen Valdinger of Chocolatey Software for Dan Franciscus 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()] [cmdletBinding()]
Param( Param(
[ValidateScript({Test-Path $_})] [ValidateScript({Test-Path $_})]
[String[]] [String[]]
$ChocolateyPackage $ChocolateyPackage,
[Parameter()]
[String[]]
[ValidateSet('Authors','Description','ProjectUrl','Owners','Licenseurl','Iconurl','Dependencies')]
$AdditionalInformation
) )
begin { $null = Add-Type -Assemblyname "System.IO.Compression.Filesystem" } begin { $null = Add-Type -Assemblyname "System.IO.Compression.Filesystem" }
process { process {
Foreach($package in $ChocolateyPackage){ Foreach($package in $ChocolateyPackage){
$obj = @{} $obj = [ordered]@{}
$entry = [IO.Compression.Zipfile]::OpenRead($package).Entries | $entry = [IO.Compression.Zipfile]::OpenRead($package).Entries |
Where-Object { $_.Name -match "nuspec" } Where-Object { $_.Name -match "nuspec" }
$stream = $entry.Open() $stream = $entry.Open()
@@ -36,6 +51,19 @@ Function Get-ChocoPackageMetaData {
[xml]$xml = $text [xml]$xml = $text
$obj.Add("Name","$($xml.package.metadata.id)") $obj.Add("Name","$($xml.package.metadata.id)")
$obj.Add("Version","$($xml.package.metadata.version)") $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() $reader.Close()
$stream.Close() $stream.Close()
[pscustomobject]$obj [pscustomobject]$obj