Private/WinGet/New-WinGetOwnershipNotes.ps1

function New-WinGetOwnershipNotes {
    [CmdletBinding()]
    [OutputType([string])]
    param(
        [Parameter(Mandatory)]
        [psobject]$Template,

        [Parameter(Mandatory)]
        [psobject]$PackageMetadata
    )

    $lines = [System.Collections.Generic.List[string]]::new()
    $seenLines = [System.Collections.Generic.HashSet[string]]::new([System.StringComparer]::Ordinal)

    function Add-OwnershipNoteLine {
        param(
            [Parameter()]
            [AllowNull()]
            [string]$Line
        )

        if ([string]::IsNullOrWhiteSpace($Line)) {
            return
        }

        if ($seenLines.Add($Line)) {
            $lines.Add($Line)
        }
    }

    foreach ($noteLine in @($Template.metadata.notes)) {
        Add-OwnershipNoteLine -Line ([string]$noteLine)
    }

    foreach ($customNote in @($Template.metadata.placeholders.customNotes)) {
        Add-OwnershipNoteLine -Line ([string]$customNote)
    }

    $sourceMarker = if ($Template.metadata.markers.source) {
        [string]$Template.metadata.markers.source
    } else {
        'Imported from WinGet'
    }

    foreach ($metadataLine in @(
            $sourceMarker,
            ('WinGetPackageIdentifier: {0}' -f $PackageMetadata.PackageIdentifier),
            ('WinGetPackageVersion: {0}' -f $PackageMetadata.PackageVersion),
            ('WinGetTemplateId: {0}' -f $Template.templateId),
            ('WinGetManifestRepository: {0}' -f $PackageMetadata.ManifestSource.Repository),
            ('WinGetManifestPath: {0}' -f $PackageMetadata.ManifestPath)
        )) {
        Add-OwnershipNoteLine -Line $metadataLine
    }

    return $lines -join [Environment]::NewLine
}