mirror of
https://github.com/anchore/syft.git
synced 2025-11-17 16:33:21 +01:00
Find version numbers from jars with different naming conventions (#1174)
This commit is contained in:
parent
b0fc955e0c
commit
57c5413fe0
@ -48,7 +48,8 @@ import (
|
||||
// my-http2-server-5 --> name="my-http2-server", version="5"
|
||||
// jetpack-build235-rc5 --> name="jetpack", version="build2.0-rc5"
|
||||
// ironman-r4-2009 --> name="ironman", version="r4-2009"
|
||||
var nameAndVersionPattern = regexp.MustCompile(`(?Ui)^(?P<name>(?:[[:alpha:]][[:word:].]*(?:\.[[:alpha:]][[:word:].]*)*-?)+)(?:-(?P<version>(?:\d.*|(?:build\d*.*)|(?:rc?\d+(?:^[[:alpha:]].*)?))))?$`)
|
||||
var nameAndVersionPattern = regexp.MustCompile(`(?Ui)^(?P<name>(?:[[:alpha:]][[:word:].]*(?:\.[[:alpha:]][[:word:].]*)*-?)+)(?:-(?P<version>(\d.*|(build\d*.*)|(rc?\d+(?:^[[:alpha:]].*)?))))?$`)
|
||||
var secondaryVersionPattern = regexp.MustCompile(`(?:[._-](?P<version>(\d.*|(build\d*.*)|(rc?\d+(?:^[[:alpha:]].*)?))))?$`)
|
||||
|
||||
type archiveFilename struct {
|
||||
raw string
|
||||
@ -86,6 +87,15 @@ func newJavaArchiveFilename(raw string) archiveFilename {
|
||||
name := getSubexp(matches, "name", nameAndVersionPattern, raw)
|
||||
version := getSubexp(matches, "version", nameAndVersionPattern, raw)
|
||||
|
||||
// some jars get named with different conventions, like `_<version>` or `.<version>`
|
||||
if version == "" {
|
||||
matches = secondaryVersionPattern.FindStringSubmatch(name)
|
||||
version = getSubexp(matches, "version", secondaryVersionPattern, raw)
|
||||
if version != "" {
|
||||
name = name[0 : len(name)-len(version)-1]
|
||||
}
|
||||
}
|
||||
|
||||
return archiveFilename{
|
||||
raw: raw,
|
||||
name: name,
|
||||
|
||||
@ -22,6 +22,20 @@ func TestExtractInfoFromJavaArchiveFilename(t *testing.T) {
|
||||
name: "pkg-maven",
|
||||
ty: pkg.UnknownPkg,
|
||||
},
|
||||
{
|
||||
filename: "pkg-maven.4.3.2.blerg",
|
||||
version: "4.3.2",
|
||||
extension: "blerg",
|
||||
name: "pkg-maven",
|
||||
ty: pkg.UnknownPkg,
|
||||
},
|
||||
{
|
||||
filename: "pkg-maven_4.3.2.blerg",
|
||||
version: "4.3.2",
|
||||
extension: "blerg",
|
||||
name: "pkg-maven",
|
||||
ty: pkg.UnknownPkg,
|
||||
},
|
||||
{
|
||||
filename: "pkg-maven-4.3.2.jar",
|
||||
version: "4.3.2",
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user