mirror of
https://github.com/anchore/syft.git
synced 2025-11-18 08:53:15 +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"
|
// my-http2-server-5 --> name="my-http2-server", version="5"
|
||||||
// jetpack-build235-rc5 --> name="jetpack", version="build2.0-rc5"
|
// jetpack-build235-rc5 --> name="jetpack", version="build2.0-rc5"
|
||||||
// ironman-r4-2009 --> name="ironman", version="r4-2009"
|
// 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 {
|
type archiveFilename struct {
|
||||||
raw string
|
raw string
|
||||||
@ -86,6 +87,15 @@ func newJavaArchiveFilename(raw string) archiveFilename {
|
|||||||
name := getSubexp(matches, "name", nameAndVersionPattern, raw)
|
name := getSubexp(matches, "name", nameAndVersionPattern, raw)
|
||||||
version := getSubexp(matches, "version", 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{
|
return archiveFilename{
|
||||||
raw: raw,
|
raw: raw,
|
||||||
name: name,
|
name: name,
|
||||||
|
|||||||
@ -22,6 +22,20 @@ func TestExtractInfoFromJavaArchiveFilename(t *testing.T) {
|
|||||||
name: "pkg-maven",
|
name: "pkg-maven",
|
||||||
ty: pkg.UnknownPkg,
|
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",
|
filename: "pkg-maven-4.3.2.jar",
|
||||||
version: "4.3.2",
|
version: "4.3.2",
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user