Skip to content

NuGet v3 populate dependencies #1778

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 16 commits into
base: master
Choose a base branch
from

Conversation

o-l-a-v
Copy link
Contributor

@o-l-a-v o-l-a-v commented Jan 23, 2025

PR Summary

What

Populate dependencies on NuGet v3 search.

  • Seems to solve both populating dependencies and -IncludeDependencies for NuGet v3 repositories.
  • To my knowledge this works for PowerShell resources as they just have one dependencyGroup (?), but maybe not for NuGet packages, as they can have multiple due to targetting multiple/different dotnet frameworks.

Todo / not working: General NuGet packages support

NuGet Gallery packages can have multiple dependencyGroups where they are targeted to dotnet version. Example azure.core:

This PR makes PSResourceGet just spit out all dependencies in all dependency groups. For azure.core this results in:

Find-PSResource
PS > (Find-PSResource -Repository 'NuGetv3' -Name 'azure.core' -Debug).Dependencies
DEBUG: In FindPSResource::ProcessResourceNameParameterSet()
DEBUG: Filtering package name(s) on wildcards
DEBUG: In FindHelper::FindByResourceName()
DEBUG: Parameters passed in >>> Name: 'azure.core'; ResourceType: 'None'; VersionRange: ''; NuGetVersion: ''; VersionType: 'NoVersion'; Version: ''; Prerelease: 'False'; Tag: ''; Repository: 'NuGetv3'; IncludeDependencies 'False'
DEBUG: Searching through repository 'NuGetv3'
DEBUG: In FindHelper::SearchByNames()
DEBUG: No version specified, package name is specified
DEBUG: In V3ServerAPICalls::FindName()
DEBUG: In V3ServerAPICalls::FindNameHelper()
DEBUG: In V3ServerAPICalls::GetVersionedPackageEntriesFromRegistrationsResource()
DEBUG: In V3ServerAPICalls::GetResourcesFromServiceIndex()
DEBUG: In V3ServerAPICalls::HttpRequestCall()
DEBUG: Request url is 'https://api.nuget.org/v3/index.json'
DEBUG: In V3ServerAPICalls::FindRegistrationsBaseUrl()
DEBUG: In V3ServerAPICalls::GetVersionedResponsesFromRegistrationsResource()
DEBUG: In V3ServerAPICalls::HttpRequestCall()
DEBUG: Request url is 'https://api.nuget.org/v3/registration5-gz-semver2/azure.core/index.json'
DEBUG: In V3ServerAPICalls::GetMetadataElementsFromResponse()
DEBUG: In V3ServerAPICalls::GetMetadataElementFromItemsElement()
DEBUG: In V3ServerAPICalls::IsLatestVersionFirstForSearch()
DEBUG: 'azure.core' version parsed as '1.44.1'
DEBUG: Found package 'Azure.Core' version '1.44.1'
DEBUG: Package 'Azure.Core' returned from server
DEBUG: Package 'Azure.Core' was previously discovered and returned

Name                                              VersionRange
----                                              ------------
Microsoft.Bcl.AsyncInterfaces                     [6.0.0, )
System.ClientModel                                [1.1.0, )
System.Diagnostics.DiagnosticSource               [6.0.1, )
System.Memory.Data                                [6.0.0, )
System.Net.Http                                   [4.3.4, )
System.Numerics.Vectors                           [4.5.0, )
System.Runtime.InteropServices.RuntimeInformation [4.3.0, )
System.Text.Encodings.Web                         [6.0.0, )
System.Text.Json                                  [6.0.10, )
System.Threading.Tasks.Extensions                 [4.5.4, )
Microsoft.Bcl.AsyncInterfaces                     [6.0.0, )
System.ClientModel                                [1.1.0, )
System.Diagnostics.DiagnosticSource               [6.0.1, )
System.Memory.Data                                [6.0.0, )
System.Numerics.Vectors                           [4.5.0, )
System.Text.Encodings.Web                         [6.0.0, )
System.Text.Json                                  [6.0.10, )
System.Threading.Tasks.Extensions                 [4.5.4, )
Microsoft.Bcl.AsyncInterfaces                     [6.0.0, )
System.ClientModel                                [1.1.0, )
System.Diagnostics.DiagnosticSource               [6.0.1, )
System.Memory.Data                                [6.0.0, )
System.Numerics.Vectors                           [4.5.0, )
System.Text.Encodings.Web                         [6.0.0, )
System.Text.Json                                  [6.0.10, )
System.Threading.Tasks.Extensions                 [4.5.4, )
Microsoft.Bcl.AsyncInterfaces                     [6.0.0, )
System.ClientModel                                [1.1.0, )
System.Diagnostics.DiagnosticSource               [6.0.1, )
System.Memory.Data                                [6.0.0, )
System.Numerics.Vectors                           [4.5.0, )
System.Text.Encodings.Web                         [6.0.0, )
System.Text.Json                                  [6.0.10, )
System.Threading.Tasks.Extensions                 [4.5.4, )

PS >
Save-PSResource
PS > > Save-PSResource -Repository 'NuGetv3' -TrustRepository -Name 'azure.core' -WhatIf
What if: Performing the operation "Save-PSResource" on target "Package to save: 'Azure.Core', version: '1.44.1'".
What if: Performing the operation "Save-PSResource" on target "Package to save: 'Microsoft.NETCore.Platforms', version: '1.1.0'".
What if: Performing the operation "Save-PSResource" on target "Package to save: 'Microsoft.NETCore.Targets', version: '1.1.0'".
What if: Performing the operation "Save-PSResource" on target "Package to save: 'System.Runtime', version: '4.3.0'".
What if: Performing the operation "Save-PSResource" on target "Package to save: 'System.Runtime.CompilerServices.Unsafe', version: '4.5.3'".
What if: Performing the operation "Save-PSResource" on target "Package to save: 'System.Collections', version: '4.3.0'".
What if: Performing the operation "Save-PSResource" on target "Package to save: 'System.Threading.Tasks', version: '4.3.0'".
What if: Performing the operation "Save-PSResource" on target "Package to save: 'System.Threading.Tasks.Extensions', version: '4.5.4'".
What if: Performing the operation "Save-PSResource" on target "Package to save: 'Microsoft.Bcl.AsyncInterfaces', version: '6.0.0'".
What if: Performing the operation "Save-PSResource" on target "Package to save: 'System.Diagnostics.Debug', version: '4.3.0'".
What if: Performing the operation "Save-PSResource" on target "Package to save: 'System.Diagnostics.Tracing', version: '4.3.0'".
What if: Performing the operation "Save-PSResource" on target "Package to save: 'System.Globalization', version: '4.3.0'".
What if: Performing the operation "Save-PSResource" on target "Package to save: 'System.Text.Encoding', version: '4.3.0'".
What if: Performing the operation "Save-PSResource" on target "Package to save: 'System.IO', version: '4.3.0'".
What if: Performing the operation "Save-PSResource" on target "Package to save: 'System.Reflection.Primitives', version: '4.3.0'".
What if: Performing the operation "Save-PSResource" on target "Package to save: 'System.Reflection', version: '4.3.0'".
What if: Performing the operation "Save-PSResource" on target "Package to save: 'System.Resources.ResourceManager', version: '4.3.0'".
What if: Performing the operation "Save-PSResource" on target "Package to save: 'System.Threading', version: '4.3.0'".
What if: Performing the operation "Save-PSResource" on target "Package to save: 'System.Buffers', version: '4.5.1'".
What if: Performing the operation "Save-PSResource" on target "Package to save: 'System.Diagnostics.Tools', version: '4.3.0'".
What if: Performing the operation "Save-PSResource" on target "Package to save: 'System.Runtime.Extensions', version: '4.3.0'".
What if: Performing the operation "Save-PSResource" on target "Package to save: 'System.Linq', version: '4.3.0'".
What if: Performing the operation "Save-PSResource" on target "Package to save: 'System.Reflection.Emit.ILGeneration', version: '4.3.0'".
What if: Performing the operation "Save-PSResource" on target "Package to save: 'System.Reflection.Emit.Lightweight', version: '4.3.0'".
What if: Performing the operation "Save-PSResource" on target "Package to save: 'System.Reflection.Extensions', version: '4.3.0'".
What if: Performing the operation "Save-PSResource" on target "Package to save: 'System.Diagnostics.Contracts', version: '4.3.0'".
What if: Performing the operation "Save-PSResource" on target "Package to save: 'System.Reflection.TypeExtensions', version: '4.3.0'".
What if: Performing the operation "Save-PSResource" on target "Package to save: 'System.ObjectModel', version: '4.3.0'".
What if: Performing the operation "Save-PSResource" on target "Package to save: 'System.Reflection.Emit', version: '4.3.0'".
What if: Performing the operation "Save-PSResource" on target "Package to save: 'System.Linq.Expressions', version: '4.3.0'".
What if: Performing the operation "Save-PSResource" on target "Package to save: 'System.Runtime.Handles', version: '4.3.0'".
What if: Performing the operation "Save-PSResource" on target "Package to save: 'System.Net.Primitives', version: '4.3.0'".
What if: Performing the operation "Save-PSResource" on target "Package to save: 'System.Text.Encoding.Extensions', version: '4.3.0'".
What if: Performing the operation "Save-PSResource" on target "Package to save: 'System.Text.RegularExpressions', version: '4.3.0'".
What if: Performing the operation "Save-PSResource" on target "Package to save: 'System.IO.FileSystem.Primitives', version: '4.3.0'".
What if: Performing the operation "Save-PSResource" on target "Package to save: 'System.IO.FileSystem', version: '4.3.0'".
What if: Performing the operation "Save-PSResource" on target "Package to save: 'System.Runtime.InteropServices', version: '4.3.0'".
What if: Performing the operation "Save-PSResource" on target "Package to save: 'System.Xml.ReaderWriter', version: '4.3.0'".
What if: Performing the operation "Save-PSResource" on target "Package to save: 'System.Xml.XDocument', version: '4.3.0'".
What if: Performing the operation "Save-PSResource" on target "Package to save: 'System.Collections.Concurrent', version: '4.3.0'".
What if: Performing the operation "Save-PSResource" on target "Package to save: 'runtime.native.System.IO.Compression', version: '4.3.0'".
What if: Performing the operation "Save-PSResource" on target "Package to save: 'runtime.native.System', version: '4.3.0'".
What if: Performing the operation "Save-PSResource" on target "Package to save: 'System.IO.Compression', version: '4.3.0'".
What if: Performing the operation "Save-PSResource" on target "Package to save: 'System.Diagnostics.DiagnosticSource', version: '4.3.0'".
What if: Performing the operation "Save-PSResource" on target "Package to save: 'System.Security.Cryptography.Primitives', version: '4.3.0'".
What if: Performing the operation "Save-PSResource" on target "Package to save: 'runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl', version: '4.3.0'".
What if: Performing the operation "Save-PSResource" on target "Package to save: 'runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl', version: '4.3.0'".
What if: Performing the operation "Save-PSResource" on target "Package to save: 'runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl', version: '4.3.0'".
What if: Performing the operation "Save-PSResource" on target "Package to save: 'runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl', version: '4.3.0'".
What if: Performing the operation "Save-PSResource" on target "Package to save: 'runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl', version: '4.3.0'".
What if: Performing the operation "Save-PSResource" on target "Package to save: 'runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl', version: '4.3.0'".
What if: Performing the operation "Save-PSResource" on target "Package to save: 'runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl', version: '4.3.0'".
What if: Performing the operation "Save-PSResource" on target "Package to save: 'runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl', version: '4.3.0'".
What if: Performing the operation "Save-PSResource" on target "Package to save: 'runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl', version: '4.3.0'".
What if: Performing the operation "Save-PSResource" on target "Package to save: 'runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl', version: '4.3.0'".
What if: Performing the operation "Save-PSResource" on target "Package to save: 'runtime.native.System.Security.Cryptography.OpenSsl', version: '4.3.0'".
What if: Performing the operation "Save-PSResource" on target "Package to save: 'System.Security.Cryptography.Encoding', version: '4.3.0'".
What if: Performing the operation "Save-PSResource" on target "Package to save: 'runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple', version: '4.3.0'".
What if: Performing the operation "Save-PSResource" on target "Package to save: 'runtime.native.System.Security.Cryptography.Apple', version: '4.3.0'".
What if: Performing the operation "Save-PSResource" on target "Package to save: 'System.Runtime.Numerics', version: '4.3.0'".
What if: Performing the operation "Save-PSResource" on target "Package to save: 'System.Security.Cryptography.Algorithms', version: '4.3.0'".
What if: Performing the operation "Save-PSResource" on target "Package to save: 'System.Globalization.Calendars', version: '4.3.0'".
What if: Performing the operation "Save-PSResource" on target "Package to save: 'System.Security.Cryptography.Cng', version: '4.3.0'".
What if: Performing the operation "Save-PSResource" on target "Package to save: 'runtime.native.System.Net.Http', version: '4.3.0'".
What if: Performing the operation "Save-PSResource" on target "Package to save: 'System.Security.Cryptography.Csp', version: '4.3.0'".
What if: Performing the operation "Save-PSResource" on target "Package to save: 'System.Security.Cryptography.OpenSsl', version: '4.3.0'".
What if: Performing the operation "Save-PSResource" on target "Package to save: 'System.Security.Cryptography.X509Certificates', version: '4.3.0'".
What if: Performing the operation "Save-PSResource" on target "Package to save: 'System.Runtime.WindowsRuntime', version: '4.3.0'".
What if: Performing the operation "Save-PSResource" on target "Package to save: 'Microsoft.Win32.Primitives', version: '4.3.0'".
What if: Performing the operation "Save-PSResource" on target "Package to save: 'System.Globalization.Extensions', version: '4.3.0'".
What if: Performing the operation "Save-PSResource" on target "Package to save: 'System.Net.Http', version: '4.3.0'".
What if: Performing the operation "Save-PSResource" on target "Package to save: 'System.Runtime.InteropServices.RuntimeInformation', version: '4.3.0'".
What if: Performing the operation "Save-PSResource" on target "Package to save: 'System.Threading.Timer', version: '4.3.0'".
What if: Performing the operation "Save-PSResource" on target "Package to save: 'System.AppContext', version: '4.3.0'".
What if: Performing the operation "Save-PSResource" on target "Package to save: 'System.Console', version: '4.3.0'".
What if: Performing the operation "Save-PSResource" on target "Package to save: 'System.IO.Compression.ZipFile', version: '4.3.0'".
What if: Performing the operation "Save-PSResource" on target "Package to save: 'System.Net.Sockets', version: '4.3.0'".
What if: Performing the operation "Save-PSResource" on target "Package to save: 'NETStandard.Library', version: '1.6.1'".
What if: Performing the operation "Save-PSResource" on target "Package to save: 'System.Numerics.Vectors', version: '4.5.0'".
What if: Performing the operation "Save-PSResource" on target "Package to save: 'System.Memory', version: '4.5.4'".
What if: Performing the operation "Save-PSResource" on target "Package to save: 'System.Text.Encodings.Web', version: '4.7.2'".
What if: Performing the operation "Save-PSResource" on target "Package to save: 'System.ValueTuple', version: '4.5.0'".
What if: Performing the operation "Save-PSResource" on target "Package to save: 'System.Text.Json', version: '4.6.0'".
What if: Performing the operation "Save-PSResource" on target "Package to save: 'System.Memory.Data', version: '1.0.2'".
What if: Performing the operation "Save-PSResource" on target "Package to save: 'System.ClientModel', version: '1.1.0'".

PS >

Motivation

Better support for NuGet v3 repositories. My specific reasons:

  • Resilience: pwsh.gallery by Justin Grote is a great NuGet v3 mirror of PowerShell Gallery, very useful when PowerShell Gallery goes down.

Tested how

Tested with pwsh.gallery:

# Register pwsh.gallery if not already present
if ((Get-PSResourceRepository).Where{$_.'Name' -eq 'pwsh.gallery'}.'Count' -le 0) {
    Register-PSResourceRepository -Name 'pwsh.gallery' `
        -Uri 'https://pwsh.gallery/index.json' -ApiVersion 'v3' -Priority 60
}

# Find a package we know will have dependencies
(Find-PSResource -Repository 'pwsh.gallery' -Name 'Az').'Dependencies'

# Check what Save-PSResource would do
Save-PSResource -Repository 'pwsh.gallery' -TrustRepository -Name 'Az' -WhatIf
Example NuGet v3 data for Az v13.1.0 from pwsh.gallery

https://pwsh.gallery/registration/az/index.json

{
  "@id": "https://pwsh.gallery/registration/az/13.1.0.json",
  "@type": "Package",
  "catalogEntry": {
    "@id": "https://pwsh.gallery/virtualcatalog/data/30b47e3b-4235-4c1a-a11d-49cb159b0752.json",
    "@type": [
      "PackageDetails",
      "catalog:Permalink"
    ],
    "authors": "Microsoft Corporation",
    "dependencyGroups": [
      {
        "@id": "https://pwsh.gallery/virtualcatalog/data/30b47e3b-4235-4c1a-a11d-49cb159b0752.json#dependencygroup/any",
        "@type": "PackageDependencyGroup",
        "dependencies": [
          {
            "@id": "https://pwsh.gallery/virtualcatalog/data/30b47e3b-4235-4c1a-a11d-49cb159b0752.json#dependencygroup/any/az.accounts",
            "@type": "PackageDependency",
            "id": "Az.Accounts",
            "range": "[4.0.1, )"
          },
          {
            "@id": "https://pwsh.gallery/virtualcatalog/data/30b47e3b-4235-4c1a-a11d-49cb159b0752.json#dependencygroup/any/az.advisor",
            "@type": "PackageDependency",
            "id": "Az.Advisor",
            "range": "[2.1.0, 2.1.0]"
          },
          {
            "@id": "https://pwsh.gallery/virtualcatalog/data/30b47e3b-4235-4c1a-a11d-49cb159b0752.json#dependencygroup/any/az.aks",
            "@type": "PackageDependency",
            "id": "Az.Aks",
            "range": "[6.1.0, 6.1.0]"
          },
          {
            "@id": "https://pwsh.gallery/virtualcatalog/data/30b47e3b-4235-4c1a-a11d-49cb159b0752.json#dependencygroup/any/az.analysisservices",
            "@type": "PackageDependency",
            "id": "Az.AnalysisServices",
            "range": "[1.2.0, 1.2.0]"
          },
          {
            "@id": "https://pwsh.gallery/virtualcatalog/data/30b47e3b-4235-4c1a-a11d-49cb159b0752.json#dependencygroup/any/az.apimanagement",
            "@type": "PackageDependency",
            "id": "Az.ApiManagement",
            "range": "[4.1.0, 4.1.0]"
          },
          {
            "@id": "https://pwsh.gallery/virtualcatalog/data/30b47e3b-4235-4c1a-a11d-49cb159b0752.json#dependencygroup/any/az.app",
            "@type": "PackageDependency",
            "id": "Az.App",
            "range": "[2.0.1, 2.0.1]"
          },
          {
            "@id": "https://pwsh.gallery/virtualcatalog/data/30b47e3b-4235-4c1a-a11d-49cb159b0752.json#dependencygroup/any/az.appconfiguration",
            "@type": "PackageDependency",
            "id": "Az.AppConfiguration",
            "range": "[1.4.0, 1.4.0]"
          },
          {
            "@id": "https://pwsh.gallery/virtualcatalog/data/30b47e3b-4235-4c1a-a11d-49cb159b0752.json#dependencygroup/any/az.applicationinsights",
            "@type": "PackageDependency",
            "id": "Az.ApplicationInsights",
            "range": "[2.3.0, 2.3.0]"
          },
          {
            "@id": "https://pwsh.gallery/virtualcatalog/data/30b47e3b-4235-4c1a-a11d-49cb159b0752.json#dependencygroup/any/az.arcresourcebridge",
            "@type": "PackageDependency",
            "id": "Az.ArcResourceBridge",
            "range": "[1.1.0, 1.1.0]"
          },
          {
            "@id": "https://pwsh.gallery/virtualcatalog/data/30b47e3b-4235-4c1a-a11d-49cb159b0752.json#dependencygroup/any/az.attestation",
            "@type": "PackageDependency",
            "id": "Az.Attestation",
            "range": "[2.1.0, 2.1.0]"
          },
          {
            "@id": "https://pwsh.gallery/virtualcatalog/data/30b47e3b-4235-4c1a-a11d-49cb159b0752.json#dependencygroup/any/az.automanage",
            "@type": "PackageDependency",
            "id": "Az.Automanage",
            "range": "[1.1.0, 1.1.0]"
          },
          {
            "@id": "https://pwsh.gallery/virtualcatalog/data/30b47e3b-4235-4c1a-a11d-49cb159b0752.json#dependencygroup/any/az.automation",
            "@type": "PackageDependency",
            "id": "Az.Automation",
            "range": "[1.11.0, 1.11.0]"
          },
          {
            "@id": "https://pwsh.gallery/virtualcatalog/data/30b47e3b-4235-4c1a-a11d-49cb159b0752.json#dependencygroup/any/az.batch",
            "@type": "PackageDependency",
            "id": "Az.Batch",
            "range": "[3.7.0, 3.7.0]"
          },
          {
            "@id": "https://pwsh.gallery/virtualcatalog/data/30b47e3b-4235-4c1a-a11d-49cb159b0752.json#dependencygroup/any/az.billing",
            "@type": "PackageDependency",
            "id": "Az.Billing",
            "range": "[2.2.0, 2.2.0]"
          },
          {
            "@id": "https://pwsh.gallery/virtualcatalog/data/30b47e3b-4235-4c1a-a11d-49cb159b0752.json#dependencygroup/any/az.cdn",
            "@type": "PackageDependency",
            "id": "Az.Cdn",
            "range": "[3.3.0, 3.3.0]"
          },
          {
            "@id": "https://pwsh.gallery/virtualcatalog/data/30b47e3b-4235-4c1a-a11d-49cb159b0752.json#dependencygroup/any/az.cloudservice",
            "@type": "PackageDependency",
            "id": "Az.CloudService",
            "range": "[2.1.0, 2.1.0]"
          },
          {
            "@id": "https://pwsh.gallery/virtualcatalog/data/30b47e3b-4235-4c1a-a11d-49cb159b0752.json#dependencygroup/any/az.cognitiveservices",
            "@type": "PackageDependency",
            "id": "Az.CognitiveServices",
            "range": "[1.15.0, 1.15.0]"
          },
          {
            "@id": "https://pwsh.gallery/virtualcatalog/data/30b47e3b-4235-4c1a-a11d-49cb159b0752.json#dependencygroup/any/az.compute",
            "@type": "PackageDependency",
            "id": "Az.Compute",
            "range": "[9.0.1, 9.0.1]"
          },
          {
            "@id": "https://pwsh.gallery/virtualcatalog/data/30b47e3b-4235-4c1a-a11d-49cb159b0752.json#dependencygroup/any/az.confidentialledger",
            "@type": "PackageDependency",
            "id": "Az.ConfidentialLedger",
            "range": "[1.1.0, 1.1.0]"
          },
          {
            "@id": "https://pwsh.gallery/virtualcatalog/data/30b47e3b-4235-4c1a-a11d-49cb159b0752.json#dependencygroup/any/az.connectedmachine",
            "@type": "PackageDependency",
            "id": "Az.ConnectedMachine",
            "range": "[1.1.1, 1.1.1]"
          },
          {
            "@id": "https://pwsh.gallery/virtualcatalog/data/30b47e3b-4235-4c1a-a11d-49cb159b0752.json#dependencygroup/any/az.containerinstance",
            "@type": "PackageDependency",
            "id": "Az.ContainerInstance",
            "range": "[4.1.1, 4.1.1]"
          },
          {
            "@id": "https://pwsh.gallery/virtualcatalog/data/30b47e3b-4235-4c1a-a11d-49cb159b0752.json#dependencygroup/any/az.containerregistry",
            "@type": "PackageDependency",
            "id": "Az.ContainerRegistry",
            "range": "[4.3.0, 4.3.0]"
          },
          {
            "@id": "https://pwsh.gallery/virtualcatalog/data/30b47e3b-4235-4c1a-a11d-49cb159b0752.json#dependencygroup/any/az.cosmosdb",
            "@type": "PackageDependency",
            "id": "Az.CosmosDB",
            "range": "[1.16.0, 1.16.0]"
          },
          {
            "@id": "https://pwsh.gallery/virtualcatalog/data/30b47e3b-4235-4c1a-a11d-49cb159b0752.json#dependencygroup/any/az.databoxedge",
            "@type": "PackageDependency",
            "id": "Az.DataBoxEdge",
            "range": "[1.2.0, 1.2.0]"
          },
          {
            "@id": "https://pwsh.gallery/virtualcatalog/data/30b47e3b-4235-4c1a-a11d-49cb159b0752.json#dependencygroup/any/az.databricks",
            "@type": "PackageDependency",
            "id": "Az.Databricks",
            "range": "[1.10.0, 1.10.0]"
          },
          {
            "@id": "https://pwsh.gallery/virtualcatalog/data/30b47e3b-4235-4c1a-a11d-49cb159b0752.json#dependencygroup/any/az.datafactory",
            "@type": "PackageDependency",
            "id": "Az.DataFactory",
            "range": "[1.19.0, 1.19.0]"
          },
          {
            "@id": "https://pwsh.gallery/virtualcatalog/data/30b47e3b-4235-4c1a-a11d-49cb159b0752.json#dependencygroup/any/az.datalakeanalytics",
            "@type": "PackageDependency",
            "id": "Az.DataLakeAnalytics",
            "range": "[1.1.0, 1.1.0]"
          },
          {
            "@id": "https://pwsh.gallery/virtualcatalog/data/30b47e3b-4235-4c1a-a11d-49cb159b0752.json#dependencygroup/any/az.datalakestore",
            "@type": "PackageDependency",
            "id": "Az.DataLakeStore",
            "range": "[1.4.0, 1.4.0]"
          },
          {
            "@id": "https://pwsh.gallery/virtualcatalog/data/30b47e3b-4235-4c1a-a11d-49cb159b0752.json#dependencygroup/any/az.dataprotection",
            "@type": "PackageDependency",
            "id": "Az.DataProtection",
            "range": "[2.6.0, 2.6.0]"
          },
          {
            "@id": "https://pwsh.gallery/virtualcatalog/data/30b47e3b-4235-4c1a-a11d-49cb159b0752.json#dependencygroup/any/az.datashare",
            "@type": "PackageDependency",
            "id": "Az.DataShare",
            "range": "[1.1.0, 1.1.0]"
          },
          {
            "@id": "https://pwsh.gallery/virtualcatalog/data/30b47e3b-4235-4c1a-a11d-49cb159b0752.json#dependencygroup/any/az.desktopvirtualization",
            "@type": "PackageDependency",
            "id": "Az.DesktopVirtualization",
            "range": "[5.4.1, 5.4.1]"
          },
          {
            "@id": "https://pwsh.gallery/virtualcatalog/data/30b47e3b-4235-4c1a-a11d-49cb159b0752.json#dependencygroup/any/az.devcenter",
            "@type": "PackageDependency",
            "id": "Az.DevCenter",
            "range": "[2.0.1, 2.0.1]"
          },
          {
            "@id": "https://pwsh.gallery/virtualcatalog/data/30b47e3b-4235-4c1a-a11d-49cb159b0752.json#dependencygroup/any/az.devtestlabs",
            "@type": "PackageDependency",
            "id": "Az.DevTestLabs",
            "range": "[1.1.0, 1.1.0]"
          },
          {
            "@id": "https://pwsh.gallery/virtualcatalog/data/30b47e3b-4235-4c1a-a11d-49cb159b0752.json#dependencygroup/any/az.dns",
            "@type": "PackageDependency",
            "id": "Az.Dns",
            "range": "[1.3.1, 1.3.1]"
          },
          {
            "@id": "https://pwsh.gallery/virtualcatalog/data/30b47e3b-4235-4c1a-a11d-49cb159b0752.json#dependencygroup/any/az.dnsresolver",
            "@type": "PackageDependency",
            "id": "Az.DnsResolver",
            "range": "[1.1.1, 1.1.1]"
          },
          {
            "@id": "https://pwsh.gallery/virtualcatalog/data/30b47e3b-4235-4c1a-a11d-49cb159b0752.json#dependencygroup/any/az.elasticsan",
            "@type": "PackageDependency",
            "id": "Az.ElasticSan",
            "range": "[1.2.1, 1.2.1]"
          },
          {
            "@id": "https://pwsh.gallery/virtualcatalog/data/30b47e3b-4235-4c1a-a11d-49cb159b0752.json#dependencygroup/any/az.eventgrid",
            "@type": "PackageDependency",
            "id": "Az.EventGrid",
            "range": "[2.2.0, 2.2.0]"
          },
          {
            "@id": "https://pwsh.gallery/virtualcatalog/data/30b47e3b-4235-4c1a-a11d-49cb159b0752.json#dependencygroup/any/az.eventhub",
            "@type": "PackageDependency",
            "id": "Az.EventHub",
            "range": "[5.1.0, 5.1.0]"
          },
          {
            "@id": "https://pwsh.gallery/virtualcatalog/data/30b47e3b-4235-4c1a-a11d-49cb159b0752.json#dependencygroup/any/az.frontdoor",
            "@type": "PackageDependency",
            "id": "Az.FrontDoor",
            "range": "[1.12.0, 1.12.0]"
          },
          {
            "@id": "https://pwsh.gallery/virtualcatalog/data/30b47e3b-4235-4c1a-a11d-49cb159b0752.json#dependencygroup/any/az.functions",
            "@type": "PackageDependency",
            "id": "Az.Functions",
            "range": "[4.2.0, 4.2.0]"
          },
          {
            "@id": "https://pwsh.gallery/virtualcatalog/data/30b47e3b-4235-4c1a-a11d-49cb159b0752.json#dependencygroup/any/az.hdinsight",
            "@type": "PackageDependency",
            "id": "Az.HDInsight",
            "range": "[6.3.1, 6.3.1]"
          },
          {
            "@id": "https://pwsh.gallery/virtualcatalog/data/30b47e3b-4235-4c1a-a11d-49cb159b0752.json#dependencygroup/any/az.healthcareapis",
            "@type": "PackageDependency",
            "id": "Az.HealthcareApis",
            "range": "[2.1.0, 2.1.0]"
          },
          {
            "@id": "https://pwsh.gallery/virtualcatalog/data/30b47e3b-4235-4c1a-a11d-49cb159b0752.json#dependencygroup/any/az.healthdataaiservices",
            "@type": "PackageDependency",
            "id": "Az.HealthDataAIServices",
            "range": "[1.0.0, 1.0.0]"
          },
          {
            "@id": "https://pwsh.gallery/virtualcatalog/data/30b47e3b-4235-4c1a-a11d-49cb159b0752.json#dependencygroup/any/az.iothub",
            "@type": "PackageDependency",
            "id": "Az.IotHub",
            "range": "[2.8.0, 2.8.0]"
          },
          {
            "@id": "https://pwsh.gallery/virtualcatalog/data/30b47e3b-4235-4c1a-a11d-49cb159b0752.json#dependencygroup/any/az.keyvault",
            "@type": "PackageDependency",
            "id": "Az.KeyVault",
            "range": "[6.3.1, 6.3.1]"
          },
          {
            "@id": "https://pwsh.gallery/virtualcatalog/data/30b47e3b-4235-4c1a-a11d-49cb159b0752.json#dependencygroup/any/az.kusto",
            "@type": "PackageDependency",
            "id": "Az.Kusto",
            "range": "[2.4.0, 2.4.0]"
          },
          {
            "@id": "https://pwsh.gallery/virtualcatalog/data/30b47e3b-4235-4c1a-a11d-49cb159b0752.json#dependencygroup/any/az.loadtesting",
            "@type": "PackageDependency",
            "id": "Az.LoadTesting",
            "range": "[1.1.0, 1.1.0]"
          },
          {
            "@id": "https://pwsh.gallery/virtualcatalog/data/30b47e3b-4235-4c1a-a11d-49cb159b0752.json#dependencygroup/any/az.logicapp",
            "@type": "PackageDependency",
            "id": "Az.LogicApp",
            "range": "[1.6.0, 1.6.0]"
          },
          {
            "@id": "https://pwsh.gallery/virtualcatalog/data/30b47e3b-4235-4c1a-a11d-49cb159b0752.json#dependencygroup/any/az.machinelearning",
            "@type": "PackageDependency",
            "id": "Az.MachineLearning",
            "range": "[1.2.0, 1.2.0]"
          },
          {
            "@id": "https://pwsh.gallery/virtualcatalog/data/30b47e3b-4235-4c1a-a11d-49cb159b0752.json#dependencygroup/any/az.machinelearningservices",
            "@type": "PackageDependency",
            "id": "Az.MachineLearningServices",
            "range": "[1.2.0, 1.2.0]"
          },
          {
            "@id": "https://pwsh.gallery/virtualcatalog/data/30b47e3b-4235-4c1a-a11d-49cb159b0752.json#dependencygroup/any/az.maintenance",
            "@type": "PackageDependency",
            "id": "Az.Maintenance",
            "range": "[1.5.0, 1.5.0]"
          },
          {
            "@id": "https://pwsh.gallery/virtualcatalog/data/30b47e3b-4235-4c1a-a11d-49cb159b0752.json#dependencygroup/any/az.managedserviceidentity",
            "@type": "PackageDependency",
            "id": "Az.ManagedServiceIdentity",
            "range": "[1.3.0, 1.3.0]"
          },
          {
            "@id": "https://pwsh.gallery/virtualcatalog/data/30b47e3b-4235-4c1a-a11d-49cb159b0752.json#dependencygroup/any/az.managedservices",
            "@type": "PackageDependency",
            "id": "Az.ManagedServices",
            "range": "[3.1.0, 3.1.0]"
          },
          {
            "@id": "https://pwsh.gallery/virtualcatalog/data/30b47e3b-4235-4c1a-a11d-49cb159b0752.json#dependencygroup/any/az.marketplaceordering",
            "@type": "PackageDependency",
            "id": "Az.MarketplaceOrdering",
            "range": "[2.1.0, 2.1.0]"
          },
          {
            "@id": "https://pwsh.gallery/virtualcatalog/data/30b47e3b-4235-4c1a-a11d-49cb159b0752.json#dependencygroup/any/az.media",
            "@type": "PackageDependency",
            "id": "Az.Media",
            "range": "[1.2.0, 1.2.0]"
          },
          {
            "@id": "https://pwsh.gallery/virtualcatalog/data/30b47e3b-4235-4c1a-a11d-49cb159b0752.json#dependencygroup/any/az.migrate",
            "@type": "PackageDependency",
            "id": "Az.Migrate",
            "range": "[2.6.0, 2.6.0]"
          },
          {
            "@id": "https://pwsh.gallery/virtualcatalog/data/30b47e3b-4235-4c1a-a11d-49cb159b0752.json#dependencygroup/any/az.monitor",
            "@type": "PackageDependency",
            "id": "Az.Monitor",
            "range": "[6.0.1, 6.0.1]"
          },
          {
            "@id": "https://pwsh.gallery/virtualcatalog/data/30b47e3b-4235-4c1a-a11d-49cb159b0752.json#dependencygroup/any/az.mysql",
            "@type": "PackageDependency",
            "id": "Az.MySql",
            "range": "[1.3.0, 1.3.0]"
          },
          {
            "@id": "https://pwsh.gallery/virtualcatalog/data/30b47e3b-4235-4c1a-a11d-49cb159b0752.json#dependencygroup/any/az.network",
            "@type": "PackageDependency",
            "id": "Az.Network",
            "range": "[7.12.0, 7.12.0]"
          },
          {
            "@id": "https://pwsh.gallery/virtualcatalog/data/30b47e3b-4235-4c1a-a11d-49cb159b0752.json#dependencygroup/any/az.networkcloud",
            "@type": "PackageDependency",
            "id": "Az.NetworkCloud",
            "range": "[1.1.0, 1.1.0]"
          },
          {
            "@id": "https://pwsh.gallery/virtualcatalog/data/30b47e3b-4235-4c1a-a11d-49cb159b0752.json#dependencygroup/any/az.nginx",
            "@type": "PackageDependency",
            "id": "Az.Nginx",
            "range": "[1.2.0, 1.2.0]"
          },
          {
            "@id": "https://pwsh.gallery/virtualcatalog/data/30b47e3b-4235-4c1a-a11d-49cb159b0752.json#dependencygroup/any/az.notificationhubs",
            "@type": "PackageDependency",
            "id": "Az.NotificationHubs",
            "range": "[1.2.0, 1.2.0]"
          },
          {
            "@id": "https://pwsh.gallery/virtualcatalog/data/30b47e3b-4235-4c1a-a11d-49cb159b0752.json#dependencygroup/any/az.operationalinsights",
            "@type": "PackageDependency",
            "id": "Az.OperationalInsights",
            "range": "[3.3.0, 3.3.0]"
          },
          {
            "@id": "https://pwsh.gallery/virtualcatalog/data/30b47e3b-4235-4c1a-a11d-49cb159b0752.json#dependencygroup/any/az.oracle",
            "@type": "PackageDependency",
            "id": "Az.Oracle",
            "range": "[1.1.0, 1.1.0]"
          },
          {
            "@id": "https://pwsh.gallery/virtualcatalog/data/30b47e3b-4235-4c1a-a11d-49cb159b0752.json#dependencygroup/any/az.policyinsights",
            "@type": "PackageDependency",
            "id": "Az.PolicyInsights",
            "range": "[1.7.0, 1.7.0]"
          },
          {
            "@id": "https://pwsh.gallery/virtualcatalog/data/30b47e3b-4235-4c1a-a11d-49cb159b0752.json#dependencygroup/any/az.postgresql",
            "@type": "PackageDependency",
            "id": "Az.PostgreSql",
            "range": "[1.2.0, 1.2.0]"
          },
          {
            "@id": "https://pwsh.gallery/virtualcatalog/data/30b47e3b-4235-4c1a-a11d-49cb159b0752.json#dependencygroup/any/az.powerbiembedded",
            "@type": "PackageDependency",
            "id": "Az.PowerBIEmbedded",
            "range": "[2.1.0, 2.1.0]"
          },
          {
            "@id": "https://pwsh.gallery/virtualcatalog/data/30b47e3b-4235-4c1a-a11d-49cb159b0752.json#dependencygroup/any/az.privatedns",
            "@type": "PackageDependency",
            "id": "Az.PrivateDns",
            "range": "[1.2.0, 1.2.0]"
          },
          {
            "@id": "https://pwsh.gallery/virtualcatalog/data/30b47e3b-4235-4c1a-a11d-49cb159b0752.json#dependencygroup/any/az.recoveryservices",
            "@type": "PackageDependency",
            "id": "Az.RecoveryServices",
            "range": "[7.4.0, 7.4.0]"
          },
          {
            "@id": "https://pwsh.gallery/virtualcatalog/data/30b47e3b-4235-4c1a-a11d-49cb159b0752.json#dependencygroup/any/az.rediscache",
            "@type": "PackageDependency",
            "id": "Az.RedisCache",
            "range": "[1.11.0, 1.11.0]"
          },
          {
            "@id": "https://pwsh.gallery/virtualcatalog/data/30b47e3b-4235-4c1a-a11d-49cb159b0752.json#dependencygroup/any/az.redisenterprisecache",
            "@type": "PackageDependency",
            "id": "Az.RedisEnterpriseCache",
            "range": "[1.2.1, 1.2.1]"
          },
          {
            "@id": "https://pwsh.gallery/virtualcatalog/data/30b47e3b-4235-4c1a-a11d-49cb159b0752.json#dependencygroup/any/az.relay",
            "@type": "PackageDependency",
            "id": "Az.Relay",
            "range": "[2.1.0, 2.1.0]"
          },
          {
            "@id": "https://pwsh.gallery/virtualcatalog/data/30b47e3b-4235-4c1a-a11d-49cb159b0752.json#dependencygroup/any/az.resourcegraph",
            "@type": "PackageDependency",
            "id": "Az.ResourceGraph",
            "range": "[1.1.0, 1.1.0]"
          },
          {
            "@id": "https://pwsh.gallery/virtualcatalog/data/30b47e3b-4235-4c1a-a11d-49cb159b0752.json#dependencygroup/any/az.resourcemover",
            "@type": "PackageDependency",
            "id": "Az.ResourceMover",
            "range": "[1.3.0, 1.3.0]"
          },
          {
            "@id": "https://pwsh.gallery/virtualcatalog/data/30b47e3b-4235-4c1a-a11d-49cb159b0752.json#dependencygroup/any/az.resources",
            "@type": "PackageDependency",
            "id": "Az.Resources",
            "range": "[7.8.0, 7.8.0]"
          },
          {
            "@id": "https://pwsh.gallery/virtualcatalog/data/30b47e3b-4235-4c1a-a11d-49cb159b0752.json#dependencygroup/any/az.security",
            "@type": "PackageDependency",
            "id": "Az.Security",
            "range": "[1.8.0, 1.8.0]"
          },
          {
            "@id": "https://pwsh.gallery/virtualcatalog/data/30b47e3b-4235-4c1a-a11d-49cb159b0752.json#dependencygroup/any/az.securityinsights",
            "@type": "PackageDependency",
            "id": "Az.SecurityInsights",
            "range": "[3.2.0, 3.2.0]"
          },
          {
            "@id": "https://pwsh.gallery/virtualcatalog/data/30b47e3b-4235-4c1a-a11d-49cb159b0752.json#dependencygroup/any/az.servicebus",
            "@type": "PackageDependency",
            "id": "Az.ServiceBus",
            "range": "[4.1.0, 4.1.0]"
          },
          {
            "@id": "https://pwsh.gallery/virtualcatalog/data/30b47e3b-4235-4c1a-a11d-49cb159b0752.json#dependencygroup/any/az.servicefabric",
            "@type": "PackageDependency",
            "id": "Az.ServiceFabric",
            "range": "[3.5.0, 3.5.0]"
          },
          {
            "@id": "https://pwsh.gallery/virtualcatalog/data/30b47e3b-4235-4c1a-a11d-49cb159b0752.json#dependencygroup/any/az.signalr",
            "@type": "PackageDependency",
            "id": "Az.SignalR",
            "range": "[2.1.0, 2.1.0]"
          },
          {
            "@id": "https://pwsh.gallery/virtualcatalog/data/30b47e3b-4235-4c1a-a11d-49cb159b0752.json#dependencygroup/any/az.sql",
            "@type": "PackageDependency",
            "id": "Az.Sql",
            "range": "[6.0.1, 6.0.1]"
          },
          {
            "@id": "https://pwsh.gallery/virtualcatalog/data/30b47e3b-4235-4c1a-a11d-49cb159b0752.json#dependencygroup/any/az.sqlvirtualmachine",
            "@type": "PackageDependency",
            "id": "Az.SqlVirtualMachine",
            "range": "[2.4.0, 2.4.0]"
          },
          {
            "@id": "https://pwsh.gallery/virtualcatalog/data/30b47e3b-4235-4c1a-a11d-49cb159b0752.json#dependencygroup/any/az.stackhci",
            "@type": "PackageDependency",
            "id": "Az.StackHCI",
            "range": "[2.5.0, 2.5.0]"
          },
          {
            "@id": "https://pwsh.gallery/virtualcatalog/data/30b47e3b-4235-4c1a-a11d-49cb159b0752.json#dependencygroup/any/az.stackhcivm",
            "@type": "PackageDependency",
            "id": "Az.StackHCIVM",
            "range": "[1.1.0, 1.1.0]"
          },
          {
            "@id": "https://pwsh.gallery/virtualcatalog/data/30b47e3b-4235-4c1a-a11d-49cb159b0752.json#dependencygroup/any/az.storage",
            "@type": "PackageDependency",
            "id": "Az.Storage",
            "range": "[8.1.0, 8.1.0]"
          },
          {
            "@id": "https://pwsh.gallery/virtualcatalog/data/30b47e3b-4235-4c1a-a11d-49cb159b0752.json#dependencygroup/any/az.storagemover",
            "@type": "PackageDependency",
            "id": "Az.StorageMover",
            "range": "[1.5.0, 1.5.0]"
          },
          {
            "@id": "https://pwsh.gallery/virtualcatalog/data/30b47e3b-4235-4c1a-a11d-49cb159b0752.json#dependencygroup/any/az.storagesync",
            "@type": "PackageDependency",
            "id": "Az.StorageSync",
            "range": "[2.4.0, 2.4.0]"
          },
          {
            "@id": "https://pwsh.gallery/virtualcatalog/data/30b47e3b-4235-4c1a-a11d-49cb159b0752.json#dependencygroup/any/az.streamanalytics",
            "@type": "PackageDependency",
            "id": "Az.StreamAnalytics",
            "range": "[2.1.0, 2.1.0]"
          },
          {
            "@id": "https://pwsh.gallery/virtualcatalog/data/30b47e3b-4235-4c1a-a11d-49cb159b0752.json#dependencygroup/any/az.support",
            "@type": "PackageDependency",
            "id": "Az.Support",
            "range": "[2.1.0, 2.1.0]"
          },
          {
            "@id": "https://pwsh.gallery/virtualcatalog/data/30b47e3b-4235-4c1a-a11d-49cb159b0752.json#dependencygroup/any/az.synapse",
            "@type": "PackageDependency",
            "id": "Az.Synapse",
            "range": "[3.1.0, 3.1.0]"
          },
          {
            "@id": "https://pwsh.gallery/virtualcatalog/data/30b47e3b-4235-4c1a-a11d-49cb159b0752.json#dependencygroup/any/az.trafficmanager",
            "@type": "PackageDependency",
            "id": "Az.TrafficManager",
            "range": "[1.3.0, 1.3.0]"
          },
          {
            "@id": "https://pwsh.gallery/virtualcatalog/data/30b47e3b-4235-4c1a-a11d-49cb159b0752.json#dependencygroup/any/az.websites",
            "@type": "PackageDependency",
            "id": "Az.Websites",
            "range": "[3.3.0, 3.3.0]"
          }
        ]
      }
    ],
    "description": "Microsoft Azure PowerShell - Cmdlets to manage resources in Azure. This module is compatible with PowerShell and Windows PowerShell.\nFor more information about the Az module, please visit the following: https://learn.microsoft.com/powershell/azure/",
    "iconUrl": "",
    "id": "Az",
    "language": "",
    "licenseUrl": "https://aka.ms/azps-license",
    "listed": true,
    "packageContent": "https://pwsh.gallery/flatcontainer/az/13.1.0/az.13.1.0.nupkg",
    "projectUrl": "https://github.com/Azure/azure-powershell",
    "published": "2025-01-14T03:25:18.0667647Z",
    "requireLicenseAcceptance": true,
    "summary": "",
    "tags": [
      "Azure",
      "ARM",
      "ResourceManager",
      "Linux",
      "AzureAutomationNotSupported",
      "PSModule"
    ],
    "version": "13.1.0"
  },
  "commitId": "4d7d502d-fe6a-4296-8d59-64bb13ce7cd8",
  "commitTimeStamp": "2025-01-14T03:25:20.3149938Z",
  "packageContent": "https://pwsh.gallery/flatcontainer/az/13.1.0/az.13.1.0.nupkg",
  "registration": "https://pwsh.gallery/registration/az/index.json"
}

PR Context

In my testing so far I believe this PR fixes:

PR Checklist

@o-l-a-v o-l-a-v changed the title WIP: V3 search populate dependencies #1169 V3 search populate dependencies #1169 Jan 23, 2025
@o-l-a-v o-l-a-v changed the title V3 search populate dependencies #1169 NuGet v3 populate dependencies Jan 23, 2025
@o-l-a-v
Copy link
Contributor Author

o-l-a-v commented Jan 23, 2025

I don't consider this WIP anymore. But maintainers who know more about the repositories used for testing might want to write some more tests?

Copy link
Member

@anamnavi anamnavi left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you for creating this PR @o-l-a-v and for your effort here! My apologies for the delay in reviewing this. I'm approving it but making a note that we (the PSGet team) should open a follow up PR with tests and ensuring that when a package from v3 feed, has multiple dependency groups we only return unique dependencies if there are duplicates amongst the dependency groups.

Copy link
Member

@anamnavi anamnavi left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could we add a simple test for Install-PSResource and save-PSResource, thanks @o-l-a-v!

@anamnavi
Copy link
Member

/azp run

Copy link

Azure Pipelines successfully started running 1 pipeline(s).

@alerickson
Copy link
Member

alerickson commented Jun 18, 2025

Hi @o-l-a-v, due to Microsoft policies our CI tests can only run from a branch inside of PowerShell/PSResourceGet (ie it no longer can run from a fork). I pushed your branch and opened a PR to run tests (that PR is: #1836). There are some flakey tests but my main concern is with the GitHub Packages test because those paths run through the v3Server classes.

@o-l-a-v
Copy link
Contributor Author

o-l-a-v commented Jun 19, 2025

Is the GitHub artifact registry that tests run against available to everyone? I don't have a way to test against it myself as of now.


Edit: Endpoint is https://nuget.pkg.github.com/PowerShell/index.json and it asks for authentication, so I guess no.

Maybe you can run some of the failed commands with verbose and debug to see what happens. And/or give us the output from the API when Find-PSResource?


Edit 2: I created a classic token with package read permissions, seems I can see the packages now. :) Will troubleshoot later.

@o-l-a-v

This comment has been minimized.

@o-l-a-v
Copy link
Contributor Author

o-l-a-v commented Jun 19, 2025

Ah, no. The problem is that the dependency does not exist in the GitHub registry.

PS C:\Users\wv984> Save-PSResource -Repository 'gh-pwsh' -Name 'test_module' -Path ('{0}/test' -f [System.Environment]::GetFolderPath('Desktop')) -Debug
DEBUG: In SavePSResource::ProcessSaveHelper()
DEBUG: In InstallHelper::BeginInstallPackages()
DEBUG: Parameters passed in >>> Name: 'test_module'; VersionRange: ''; NuGetVersion: ''; VersionType: 'NoVersion'; Version: ''; Prerelease: 'False'; Repository: 'gh-pwsh'; AcceptLicense: 'False'; Quiet: 'False'; Reinstall: 'True'; TrustRepository: 'False'; NoClobber: 'False'; AsNupkg: 'False'; IncludeXml 'False'; SavePackage 'True'; TemporaryPath ''; SkipDependencyCheck: 'False'; AuthenticodeCheck: 'False'; PathsToInstallPkg: 'C:\Users\wv984\Desktop\test'; Scope ''
DEBUG: In InstallHelper::ProcessRepositories()
VERBOSE: credential successfully read from vault and set for repository: gh-pwsh

Confirm
Continue with this operation?
[Y] Yes  [A] Yes to All  [H] Halt Command  [S] Suspend  [?] Help (default is "Y"): a
VERBOSE: Attempting to search for packages in 'gh-pwsh'
VERBOSE: Checking if untrusted repository should be used

Untrusted repository
You are installing the modules from an untrusted repository. If you trust this repository, change its Trusted value by
running the Set-PSResourceRepository cmdlet. Are you sure you want to install the PSResource from 'gh-pwsh'?
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "N"): a
DEBUG: In InstallHelper::InstallPackages()
DEBUG: In InstallHelper::InstallPackage()
DEBUG: In V3ServerAPICalls::FindName()
DEBUG: In V3ServerAPICalls::FindNameHelper()
DEBUG: In V3ServerAPICalls::GetVersionedPackageEntriesFromRegistrationsResource()
DEBUG: In V3ServerAPICalls::GetResourcesFromServiceIndex()
DEBUG: In V3ServerAPICalls::HttpRequestCall()
DEBUG: Request url is 'https://nuget.pkg.github.com/PowerShell/index.json'
DEBUG: In V3ServerAPICalls::FindRegistrationsBaseUrl()
DEBUG: In V3ServerAPICalls::GetVersionedResponsesFromRegistrationsResource()
DEBUG: In V3ServerAPICalls::HttpRequestCall()
DEBUG: Request url is 'https://nuget.pkg.github.com/PowerShell/test_module/index.json'
DEBUG: In V3ServerAPICalls::GetMetadataElementsFromResponse()
DEBUG: In V3ServerAPICalls::GetMetadataElementFromItemsElement()
DEBUG: In V3ServerAPICalls::IsLatestVersionFirstForSearch()
DEBUG: 'test_module' version parsed as '5.2.5-alpha001'
DEBUG: 'test_module' version parsed as '5.0.0'

Confirm
Are you sure you want to perform this action?
Performing the operation "Save-PSResource" on target "Package to save: 'test_module', version: '5.0.0'".
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "Y"): a
DEBUG: In V3ServerAPICalls::InstallPackage()
DEBUG: In V3ServerAPICalls::InstallVersion()
DEBUG: In V3ServerAPICalls::InstallHelper()
DEBUG: In V3ServerAPICalls::GetVersionedPackageEntriesFromRegistrationsResource()
DEBUG: In V3ServerAPICalls::GetResourcesFromServiceIndex()
DEBUG: In V3ServerAPICalls::HttpRequestCall()
DEBUG: Request url is 'https://nuget.pkg.github.com/PowerShell/index.json'
DEBUG: In V3ServerAPICalls::FindRegistrationsBaseUrl()
DEBUG: In V3ServerAPICalls::GetVersionedResponsesFromRegistrationsResource()
DEBUG: In V3ServerAPICalls::HttpRequestCall()
DEBUG: Request url is 'https://nuget.pkg.github.com/PowerShell/test_module/index.json'
DEBUG: In V3ServerAPICalls::GetMetadataElementsFromResponse()
DEBUG: In V3ServerAPICalls::GetMetadataElementFromItemsElement()
DEBUG: In V3ServerAPICalls::IsLatestVersionFirstForInstall()
DEBUG: In V3ServerAPICalls::HttpRequestCallForContent()
DEBUG: Request url is 'https://nuget.pkg.github.com/PowerShell/download/test_module/5.0.0/test_module.5.0.0.nupkg'
DEBUG: In InstallHelper::TryInstallToTempPath()
DEBUG: In InstallHelper::CallAcceptLicense()
DEBUG: In InstallHelper::DeleteExtraneousFiles()
DEBUG: Deleting 'C:\Users\wv984\AppData\Local\Temp\58c90666-6134-4ed6-8543-fc3061cc37f0\test_module\5.0.0\test_module.nuspec'
DEBUG: Deleting 'C:\Users\wv984\AppData\Local\Temp\58c90666-6134-4ed6-8543-fc3061cc37f0\test_module\5.0.0\[Content_Types].xml'
DEBUG: Deleting 'C:\Users\wv984\AppData\Local\Temp\58c90666-6134-4ed6-8543-fc3061cc37f0\test_module\5.0.0\_rels'
DEBUG: Deleting 'C:\Users\wv984\AppData\Local\Temp\58c90666-6134-4ed6-8543-fc3061cc37f0\test_module\5.0.0\package'
DEBUG: In V3ServerAPICalls::FindVersionGlobbing()
DEBUG: In V3ServerAPICalls::GetVersionedPackageEntriesFromRegistrationsResource()
DEBUG: In V3ServerAPICalls::GetResourcesFromServiceIndex()
DEBUG: In V3ServerAPICalls::HttpRequestCall()
DEBUG: Request url is 'https://nuget.pkg.github.com/PowerShell/index.json'
DEBUG: In V3ServerAPICalls::FindRegistrationsBaseUrl()
DEBUG: In V3ServerAPICalls::GetVersionedResponsesFromRegistrationsResource()
DEBUG: In V3ServerAPICalls::HttpRequestCall()
DEBUG: Request url is 'https://nuget.pkg.github.com/PowerShell/newpsgettestmodule/index.json'
VERBOSE: Package with name 'NewpsGetTestModule' could not be found in repository 'gh-pwsh'.
DEBUG: Found package 'test_module' version '5.0.0'
VERBOSE: Attempting to delete 'C:\Users\wv984\AppData\Local\Temp\58c90666-6134-4ed6-8543-fc3061cc37f0'
VERBOSE: Successfully deleted 'C:\Users\wv984\AppData\Local\Temp\58c90666-6134-4ed6-8543-fc3061cc37f0'
Save-PSResource: Package(s) 'test_module' could not be installed from repository 'gh-pwsh'.
PS C:\Users\wv984>

@alerickson: Make sure dependencies also exist in the GitHub repository in question, then rerun the tests. 😊

@alerickson
Copy link
Member

@o-l-a-v I'll get that up there shortly!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants