From 15ff94b56bf75b382c7816b7ce6880ddcac54e0a Mon Sep 17 00:00:00 2001 From: Alex Goodman Date: Fri, 10 Jul 2020 07:41:13 -0400 Subject: [PATCH] tweak java manifest version processing --- imgbom/cataloger/java/java_manifest.go | 16 ++++++++++++++-- imgbom/cataloger/java/java_manifest_test.go | 7 +++++++ .../test-fixtures/manifest/version-with-date | 2 ++ 3 files changed, 23 insertions(+), 2 deletions(-) create mode 100644 imgbom/cataloger/java/test-fixtures/manifest/version-with-date diff --git a/imgbom/cataloger/java/java_manifest.go b/imgbom/cataloger/java/java_manifest.go index 7dea2bdbf..1e216dd08 100644 --- a/imgbom/cataloger/java/java_manifest.go +++ b/imgbom/cataloger/java/java_manifest.go @@ -57,6 +57,12 @@ func parseJavaManifest(reader io.Reader) (*pkg.JavaManifest, error) { return nil, fmt.Errorf("unable to parse java manifest: %w", err) } + // clean select fields + if strings.Trim(manifest.ImplVersion, " ") != "" { + // transform versions with dates attached to just versions (e.g. "1.3 2244 October 5 2008" --> "1.3") + manifest.ImplVersion = strings.Split(manifest.ImplVersion, " ")[0] + } + return &manifest, nil } @@ -87,13 +93,19 @@ func newPackageFromJavaManifest(virtualPath, archivePath string, fileManifest fi var name string switch { - case manifest.Name != "": - name = manifest.Name case filenameObj.name() != "": name = filenameObj.name() + case manifest.Name != "": + // Manifest original spec... + name = manifest.Name + case manifest.Extra["Bundle-Name"] != "": + // BND tooling... + name = manifest.Extra["Bundle-Name"] case manifest.Extra["Short-Name"] != "": + // Jenkins... name = manifest.Extra["Short-Name"] case manifest.Extra["Extension-Name"] != "": + // Jenkins... name = manifest.Extra["Extension-Name"] } diff --git a/imgbom/cataloger/java/java_manifest_test.go b/imgbom/cataloger/java/java_manifest_test.go index 086c71b00..71cfce3d4 100644 --- a/imgbom/cataloger/java/java_manifest_test.go +++ b/imgbom/cataloger/java/java_manifest_test.go @@ -54,6 +54,13 @@ func TestParseJavaManifest(t *testing.T) { }, }, }, + { + fixture: "test-fixtures/manifest/version-with-date", + expected: pkg.JavaManifest{ + ManifestVersion: "1.0", + ImplVersion: "1.3", // ensure the date is stripped off during processing + }, + }, } for _, test := range tests { diff --git a/imgbom/cataloger/java/test-fixtures/manifest/version-with-date b/imgbom/cataloger/java/test-fixtures/manifest/version-with-date new file mode 100644 index 000000000..2baeeecbd --- /dev/null +++ b/imgbom/cataloger/java/test-fixtures/manifest/version-with-date @@ -0,0 +1,2 @@ +Manifest-Version: 1.0 +Implementation-Version: 1.3 2244 October 5 2005