diff --git a/build/registry/pkg/common/consts.go b/build/registry/pkg/common/consts.go index 6034b1dd..3441c619 100644 --- a/build/registry/pkg/common/consts.go +++ b/build/registry/pkg/common/consts.go @@ -21,7 +21,7 @@ const ( RulesArtifactSuffix = "-rules" // EngineVersionKey is the name given to all the engine requirements. // The same name used by Falco when outputting the engine version. - EngineVersionKey = "engine_version" + EngineVersionKey = "engine_version_semver" // PluginAPIVersion is the name givet to the plugin api version requirements. // The same name used by Falco when outputting the plugin api version PluginAPIVersion = "plugin_api_version" diff --git a/build/registry/pkg/oci/requirements.go b/build/registry/pkg/oci/requirements.go index b605ef43..f1925060 100644 --- a/build/registry/pkg/oci/requirements.go +++ b/build/registry/pkg/oci/requirements.go @@ -22,7 +22,6 @@ import ( "errors" "fmt" "os" - "strconv" "strings" "github.com/blang/semver" @@ -65,15 +64,25 @@ func rulesfileRequirement(filePath string) (*oci.ArtifactRequirement, error) { } // Split the requirement and parse the version to semVer. + // In case the requirement was expressed as a numeric value, + // we convert it to semver and treat it as minor version. tokens := strings.Split(fileScanner.Text(), ":") - reqVer, err := semver.ParseTolerant(tokens[1]) + reqVer, err := semver.Parse(tokens[1]) if err != nil { - return nil, fmt.Errorf("unable to parse to semVer the version requirement %q", tokens[1]) + reqVer, err = semver.ParseTolerant(tokens[1]) + if err != nil { + return nil, fmt.Errorf("unable to parse requirement %q: expected a numeric value or a valid semver string", tokens[1]) + } + reqVer = semver.Version{ + Major: 0, + Minor: reqVer.Major, + Patch: 0, + } } return &oci.ArtifactRequirement{ Name: common.EngineVersionKey, - Version: strconv.FormatUint(reqVer.Major, 10), + Version: reqVer.String(), }, nil }