@@ -464,17 +464,45 @@ var AllRules = func(l *Linter) Rules { //nolint:gocyclo
464464 packageName := matches [1 ]
465465 versionStream := matches [2 ]
466466
467- // package-name=${{package.full-version}}
468- provides := fmt .Sprintf ("%s=%s-r%d" , packageName , c .Package .Version , c .Package .Epoch )
469- // Some packages does not have ${{package.full-version}}, instead they have PACKAGE=VERSION.999. This is for backward compatibility.
470- provides999 := fmt .Sprintf ("%s=%s.999" , packageName , versionStream )
471- if ! slices .Contains (c .Package .Dependencies .Provides , provides ) && ! slices .Contains (c .Package .Dependencies .Provides , provides999 ) {
467+ if ! strings .HasPrefix (c .Package .Version , versionStream ) {
468+ return fmt .Errorf ("package is version streamed but package.version %s starts with different than given version stream %s" , c .Package .Version , versionStream )
469+ }
470+
471+ providesList := []string {
472+ fmt .Sprintf ("%s=%s-r%d" , packageName , c .Package .Version , c .Package .Epoch ),
473+ fmt .Sprintf ("%s=%s-r%d" , packageName , versionStream , c .Package .Epoch ),
474+ fmt .Sprintf ("%s=%s" , packageName , c .Package .Version ),
475+ fmt .Sprintf ("%s=%s" , packageName , versionStream ),
476+ fmt .Sprintf ("%s=%s.999" , packageName , versionStream ),
477+ }
478+
479+ anyMatch := false
480+ for _ , provides := range providesList {
481+ if slices .Contains (c .Package .Dependencies .Provides , provides ) {
482+ anyMatch = true
483+ break
484+ }
485+ }
486+
487+ if ! anyMatch {
472488 return fmt .Errorf ("package is version streamed but %s=${{package.full-version}} is missing on dependencies.provides" , packageName )
473489 }
474490
475491 if c .Update .Enabled && ! c .Update .Manual && c .Update .GitHubMonitor != nil {
476- // package-name-X.Y, package-name-X.Y., X.Y, vX.Y, X.Y., vX.Y., release-X.Y, release-X.Y.
477- filtersToCheck := []string {c .Package .Name , c .Package .Name + "." , versionStream , "v" + versionStream , versionStream + "." , "v" + versionStream + "." , "release-" + versionStream , "release-" + versionStream + "." }
492+ prefixesToCheck := []string {"" , "v" , packageName , "release" }
493+ separators := []string {"" , "." , "-" , "_" }
494+ versionsToCheck := []string {versionStream , strings .ReplaceAll (versionStream , "." , "-" ), strings .ReplaceAll (versionStream , "." , "_" )}
495+
496+ var filtersToCheck []string
497+ for _ , prefix := range prefixesToCheck {
498+ for _ , separator := range separators {
499+ for _ , version := range versionsToCheck {
500+ for _ , suffix := range separators {
501+ filtersToCheck = append (filtersToCheck , prefix + separator + version + suffix )
502+ }
503+ }
504+ }
505+ }
478506
479507 if ! slices .Contains (filtersToCheck , c .Update .GitHubMonitor .TagFilter ) && ! slices .Contains (filtersToCheck , c .Update .GitHubMonitor .TagFilterPrefix ) {
480508 return fmt .Errorf ("package is version streamed but tag filter %s is missing on update.github" , versionStream )
0 commit comments