diff --git a/pkg/channels/channel_rule.go b/pkg/channels/channel_rule.go index 98e79f64..53c271ec 100644 --- a/pkg/channels/channel_rule.go +++ b/pkg/channels/channel_rule.go @@ -14,5 +14,15 @@ type ChannelRule struct { //to specify the range of versions to include VersionRange string `json:"VersionRange,omitempty"` + // VersioningStrategy controls how packages are ordered to determine the latest version. + // Set to "MostRecentlyPublished" to use publish date ordering instead of SemVer comparison. + // When unset or "SemVer", the existing behaviour applies. + VersioningStrategy string `json:"VersioningStrategy,omitempty"` + + // VersionTagRegex is a regex matched against the full version/tag string. + // Used with VersioningStrategy "MostRecentlyPublished" as an alternative to + // VersionRange and Tag, supporting non-SemVer versioning schemes. + VersionTagRegex string `json:"VersionTagRegex,omitempty"` + resources.Resource } diff --git a/pkg/feeds/search_package_versions_query.go b/pkg/feeds/search_package_versions_query.go index b6e904ab..f4b0945a 100644 --- a/pkg/feeds/search_package_versions_query.go +++ b/pkg/feeds/search_package_versions_query.go @@ -10,4 +10,6 @@ type SearchPackageVersionsQuery struct { Skip int `uri:"skip,omitempty"` Take int `uri:"take,omitempty"` VersionRange string `uri:"versionRange,omitempty"` + VersioningStrategy string `uri:"versioningStrategy,omitempty"` + VersionTagRegex string `uri:"versionTagRegex,omitempty"` }