private/Get-NuspecMetadata.ps1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
$ErrorActionPreference = 'Stop'

function Get-NuspecMetadata {
    param(
        [ValidateScript( { Test-Path $_ })]
        [Parameter(Mandatory = $true)]
        [string]$nuspecFile
    )

    $nuspecFile = Resolve-path $nuspecFile

    $nu = New-Object xml
    $nu.PSBase.PreserveWhitespace = $true
    $nu.Load($nuspecFile)

    $result = @{}

    $nu.package.metadata.ChildNodes | ForEach-Object {
        if ($_.NodeType -eq "Element") {
            $result[$_.Name] = $_.InnerText
        }
    } | Out-Null

    return $result
}