From 548e40eaa5bb24aa2fade6cbf61e16329e76bd36 Mon Sep 17 00:00:00 2001 From: Stephen Valdinger Date: Sat, 27 Apr 2019 22:01:34 -0400 Subject: [PATCH 1/3] Optionally collect additonal metadata from the nuspec. --- functions/Get-ChocoPackageMetaData.ps1 | 32 ++++++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/functions/Get-ChocoPackageMetaData.ps1 b/functions/Get-ChocoPackageMetaData.ps1 index 3ea00a0..0cea724 100644 --- a/functions/Get-ChocoPackageMetaData.ps1 +++ b/functions/Get-ChocoPackageMetaData.ps1 @@ -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 From e5f00d750c7c447bdf089759e488cd90d36f8c8b Mon Sep 17 00:00:00 2001 From: Stephen Valdinger Date: Sun, 28 Apr 2019 16:38:19 -0400 Subject: [PATCH 2/3] Fix dependencies so it doesn't suck so hard. --- functions/Get-ChocoPackageMetaData.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/functions/Get-ChocoPackageMetaData.ps1 b/functions/Get-ChocoPackageMetaData.ps1 index 0cea724..85a75fd 100644 --- a/functions/Get-ChocoPackageMetaData.ps1 +++ b/functions/Get-ChocoPackageMetaData.ps1 @@ -55,7 +55,7 @@ Function Get-ChocoPackageMetaData { Foreach($member in $AdditionalInformation){ if($member -eq 'Dependencies'){ - $obj.Add("$member",$($xml.package.metadata.dependencies.dependency)) + $obj.Add("$member",$($xml.package.metadata.dependencies.dependency | Select-Object Id,Version)) } else{ From 98257cd797385f85a593e3732a5d60681e226204 Mon Sep 17 00:00:00 2001 From: Stephen Valdinger Date: Sun, 28 Apr 2019 16:48:56 -0400 Subject: [PATCH 3/3] Fix NOTES in CBH since I fixed the dependency nonsense --- functions/Get-ChocoPackageMetaData.ps1 | 4 ---- 1 file changed, 4 deletions(-) diff --git a/functions/Get-ChocoPackageMetaData.ps1 b/functions/Get-ChocoPackageMetaData.ps1 index 85a75fd..21f9fd0 100644 --- a/functions/Get-ChocoPackageMetaData.ps1 +++ b/functions/Get-ChocoPackageMetaData.ps1 @@ -20,10 +20,6 @@ Function Get-ChocoPackageMetaData { .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()]