Merge pull request #1 from steviecoaster/master

Optionally collect additonal metadata from the nuspec.
This commit is contained in:
Dan Franciscus
2019-04-28 19:22:01 -04:00
committed by GitHub

View File

@@ -9,25 +9,36 @@ 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
#> #>
[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 +47,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 | Select-Object Id,Version))
}
else{
$obj.Add("$member",$($xml.package.metadata.$($member)))
}
}
$reader.Close() $reader.Close()
$stream.Close() $stream.Close()
[pscustomobject]$obj [pscustomobject]$obj