Skip to content
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

API - Filter by version - Specifying both minimum and maximum version returns no results #270

Open
3 tasks done
o-l-a-v opened this issue Apr 11, 2024 · 3 comments
Open
3 tasks done

Comments

@o-l-a-v
Copy link

o-l-a-v commented Apr 11, 2024

Prerequisites

  • Write a descriptive title.
  • Make sure you are able to repro it on the latest version
  • Search the existing issues.

Steps to reproduce

I found this bug when I discovered following related issue:

If you with PSResourceGet do:

  • Find-PSResource -Repository 'PSGallery' -Name 'Az' -Version '(9,10)'

This produces API request:

  • https://www.powershellgallery.com/api/v2/FindPackagesById()?id='Az'&$orderby=NormalizedVersion desc&$inlinecount=allpages&$skip=0&$filter=IsPrerelease eq false and Id eq 'Az' and NormalizedVersion gt '9.0.0' and NormalizedVersion lt '10.0.0'

Which should return all versions of Az newer than 9.0.0 and older than 10.0.0.

Expected behavior

Should get all versions of Az newer than v9.0.0 and older than v10.0.0.

Actual behavior

No versions get returned.

Error details

No response

Environment data

Not relevant, API.

Version

Not relevant, API.

Visuals

No response

@jpawlowski
Copy link

jpawlowski commented Jul 13, 2024

This seems fixed now (since yesterday?), assuming you would use a range with existing versions:

Find-PSResource -Repository 'PSGallery' -Name 'Az' -Version '(11,13)' -Debug
DEBUG: In FindPSResource::ProcessResourceNameParameterSet()
DEBUG: Filtering package name(s) on wildcards
DEBUG: Parsing package version
DEBUG: In FindHelper::FindByResourceName()
DEBUG: Parameters passed in >>> Name: 'Az'; ResourceType: 'None'; VersionRange: '(11,13)'; NuGetVersion: ''; VersionType: 'VersionRange'; Version: '(11,13)'; Prerelease: 'False'; Tag: ''; Repository: 'PSGallery'; IncludeDependencies 'False'
DEBUG: Searching through repository 'PSGallery'
DEBUG: In FindHelper::SearchByNames()
DEBUG: Version range and package name are specified
DEBUG: In V2ServerAPICalls::FindVersionGlobbing()
DEBUG: In V2ServerAPICalls::FindVersionGlobbing()
DEBUG: In V2ServerAPICalls::HttpRequestCall()
DEBUG: Request url is 'https://www.powershellgallery.com/api/v2/FindPackagesById()?id='Az'&$orderby=NormalizedVersion desc&$inlinecount=allpages&$skip=0&$filter=IsPrerelease eq false and Id eq 'Az' and NormalizedVersion gt '11.0.0' and NormalizedVersion lt '13.0.0''
DEBUG: Found package 'Az' version '12.1.0'
DEBUG: Package 'Az' returned from server
DEBUG: Package 'Az' was previously discovered and returned

DEBUG: Found package 'Az' version '12.0.0'
DEBUG: Package 'Az' returned from server
DEBUG: Found package 'Az' version '11.6.0'
DEBUG: Package 'Az' returned from server
DEBUG: Found package 'Az' version '11.5.0'
DEBUG: Package 'Az' returned from server
DEBUG: Found package 'Az' version '11.4.0'
DEBUG: Package 'Az' returned from server
DEBUG: Found package 'Az' version '11.3.1'
DEBUG: Package 'Az' returned from server
DEBUG: Found package 'Az' version '11.3.0'
DEBUG: Package 'Az' returned from server
DEBUG: Found package 'Az' version '11.2.0'
DEBUG: Package 'Az' returned from server
DEBUG: Found package 'Az' version '11.1.0'
DEBUG: Package 'Az' returned from server
Name Version Prerelease Repository Description
---- ------- ---------- ---------- -----------
Az   12.1.0             PSGallery  Microsoft Azure PowerShell - Cmdlets to manage resources in Azure. This module is compatible with PowerShell and Windows PowerShell.…
Az   12.0.0             PSGallery  Microsoft Azure PowerShell - Cmdlets to manage resources in Azure. This module is compatible with PowerShell and Windows PowerShell.…
Az   11.6.0             PSGallery  Microsoft Azure PowerShell - Cmdlets to manage resources in Azure. This module is compatible with PowerShell and Windows PowerShell.…
Az   11.5.0             PSGallery  Microsoft Azure PowerShell - Cmdlets to manage resources in Azure. This module is compatible with PowerShell and Windows PowerShell.…
Az   11.4.0             PSGallery  Microsoft Azure PowerShell - Cmdlets to manage resources in Azure. This module is compatible with PowerShell and Windows PowerShell.…
Az   11.3.1             PSGallery  Microsoft Azure PowerShell - Cmdlets to manage resources in Azure. This module is compatible with PowerShell and Windows PowerShell.…
Az   11.3.0             PSGallery  Microsoft Azure PowerShell - Cmdlets to manage resources in Azure. This module is compatible with PowerShell and Windows PowerShell.…
Az   11.2.0             PSGallery  Microsoft Azure PowerShell - Cmdlets to manage resources in Azure. This module is compatible with PowerShell and Windows PowerShell.…
Az   11.1.0             PSGallery  Microsoft Azure PowerShell - Cmdlets to manage resources in Azure. This module is compatible with PowerShell and Windows Powe

@o-l-a-v
Copy link
Author

o-l-a-v commented Jul 13, 2024

@jpawlowski Interesting. (11,13) as in your example seems to work. (11,12) too. Also (8,9). But not (9,10).

Using PSResourceGet v1.0.5:

PS > Find-PSResource -Repository 'PSGallery' -Name 'Az' -Version '(9,10)' -Debug

DEBUG: In FindPSResource::ProcessResourceNameParameterSet()
DEBUG: Filtering package name(s) on wildcards
DEBUG: Parsing package version
DEBUG: In FindHelper::FindByResourceName()
DEBUG: Parameters passed in >>> Name: 'Az'; ResourceType: 'None'; VersionRange: '(9,10)'; NuGetVersion: ''; VersionType: 'VersionRange'; Version: '(9,10)'; Prerelease: 'False'; Tag: ''; Repository: 'PSGallery'; IncludeDependencies 'False'
DEBUG: Searching through repository 'PSGallery'
DEBUG: In FindHelper::SearchByNames()
DEBUG: Version range and package name are specified
DEBUG: In V2ServerAPICalls::FindVersionGlobbing()
DEBUG: In V2ServerAPICalls::FindVersionGlobbing()
DEBUG: In V2ServerAPICalls::HttpRequestCall()
DEBUG: Request url is 'https://www.powershellgallery.com/api/v2/FindPackagesById()?$filter=NormalizedVersion+gt+%279.0.0%27+and+NormalizedVersion+lt+%2710.0.0%27+and+IsPrerelease+eq+false+and+Id+eq+%27Az%27&$inlinecount=allpages&$skip=0&$orderby=NormalizedVersion+desc&id=%27Az%27'

PS >

Screenshot from PowerShell Gallery ( https://www.powershellgallery.com/packages/Az ):

image

@o-l-a-v
Copy link
Author

o-l-a-v commented Oct 3, 2024

Seems if the NuGet range goes from a number with one digit (9) to one with two (10), PowerShell Gallery doesn't return anything. Same with EnterprisePolicyAsCode ( https://www.powershellgallery.com/packages/EnterprisePolicyAsCode ):

PS > Find-PSResource -Name 'EnterprisePolicyAsCode' -Repository 'PSGallery' -Version '[9,10)'
PS > Find-PSResource -Name 'EnterprisePolicyAsCode' -Repository 'PSGallery' -Version '[8,9)'

Name                   Version Prerelease Repository Description
----                   ------- ---------- ---------- -----------
EnterprisePolicyAsCode 8.6.0              PSGallery  Enterprise Policy as Code PowerShell Module
EnterprisePolicyAsCode 8.5.1              PSGallery  Enterprise Policy as Code PowerShell Module
EnterprisePolicyAsCode 8.5.0              PSGallery  Enterprise Policy as Code PowerShell Module
EnterprisePolicyAsCode 8.4.8              PSGallery  Enterprise Policy as Code PowerShell Module
EnterprisePolicyAsCode 8.4.7              PSGallery  Enterprise Policy as Code PowerShell Module
EnterprisePolicyAsCode 8.4.6              PSGallery  Enterprise Policy as Code PowerShell Module
EnterprisePolicyAsCode 8.4.5              PSGallery  Enterprise Policy as Code PowerShell Module
EnterprisePolicyAsCode 8.4.4              PSGallery  Enterprise Policy as Code PowerShell Module
EnterprisePolicyAsCode 8.4.3              PSGallery  Enterprise Policy as Code PowerShell Module
EnterprisePolicyAsCode 8.4.2              PSGallery  Enterprise Policy as Code PowerShell Module
EnterprisePolicyAsCode 8.4.1              PSGallery  Enterprise Policy as Code PowerShell Module
EnterprisePolicyAsCode 8.4.0              PSGallery  Enterprise Policy as Code PowerShell Module
EnterprisePolicyAsCode 8.3.0              PSGallery  Enterprise Policy as Code PowerShell Module
EnterprisePolicyAsCode 8.2.7              PSGallery  Enterprise Policy as Code PowerShell Module
EnterprisePolicyAsCode 8.2.6              PSGallery  Enterprise Policy as Code PowerShell Module
EnterprisePolicyAsCode 8.2.5              PSGallery  Enterprise Policy as Code PowerShell Module
EnterprisePolicyAsCode 8.2.4              PSGallery  Enterprise Policy as Code PowerShell Module
EnterprisePolicyAsCode 8.2.3              PSGallery  Enterprise Policy as Code PowerShell Module
EnterprisePolicyAsCode 8.2.2              PSGallery  Enterprise Policy as Code PowerShell Module
EnterprisePolicyAsCode 8.2.1              PSGallery  Enterprise Policy as Code PowerShell Module
EnterprisePolicyAsCode 8.2.0              PSGallery  Enterprise Policy as Code PowerShell Module
EnterprisePolicyAsCode 8.1.1              PSGallery  Enterprise Policy as Code PowerShell Module
EnterprisePolicyAsCode 8.1.0              PSGallery  Enterprise Policy as Code PowerShell Module
EnterprisePolicyAsCode 8.0.1              PSGallery  Enterprise Policy as Code PowerShell Module
EnterprisePolicyAsCode 8.0.0              PSGallery  Enterprise Policy as Code PowerShell Module

PS >

This is a somewhat critical issue. Say you want to pin major version to 9 with:

Install-PSResource -Repository 'PSGallery' -TrustRepository -Name 'any_module' -Version '[9,10)'

Not possible at the moment. Unless you do something like:

Find-PSResource -Name 'EnterprisePolicyAsCode' -Repository 'PSGallery' -Version '*' |
    Where-Object -Property 'Version' -Match '^9.' |
    Sort-Object -Property 'Version' -Descending |
    Select-Object -First 1

But come on.. 😋 The API should be able to handle this.

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

No branches or pull requests

2 participants