Skip to content

Commit

Permalink
fix(purl): a few improvements
Browse files Browse the repository at this point in the history
  • Loading branch information
javierfreire committed Sep 19, 2023
1 parent f31ea9b commit 775c596
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 6 deletions.
6 changes: 2 additions & 4 deletions pkg/purl/purl.go
Original file line number Diff line number Diff line change
Expand Up @@ -194,7 +194,7 @@ func NewPackageURL(t string, metadata types.Metadata, pkg ftypes.Package) (Packa
namespace, name = parseComposer(name)
case packageurl.TypeGolang:
namespace, name = parseGolang(name)
if (name == "") {
if name == "" {
return PackageURL{PackageURL: *packageurl.NewPackageURL("", "", "", "", nil, "")}, nil
}
case packageurl.TypeNPM:
Expand Down Expand Up @@ -313,6 +313,7 @@ func parseMaven(pkgName string) (string, string) {

// ref. https://github.com/package-url/purl-spec/blob/a748c36ad415c8aeffe2b8a4a5d8a50d16d6d85f/PURL-TYPES.rst#golang
func parseGolang(pkgName string) (string, string) {
// The PURL will be skipped when the package name is a local path, since it can't identify a software package.
if strings.HasPrefix(pkgName, "./") || strings.HasPrefix(pkgName, "../") {
return "", ""
}
Expand Down Expand Up @@ -414,9 +415,6 @@ func parseQualifier(pkg ftypes.Package) packageurl.Qualifiers {

func parsePkgName(name string) (string, string) {
var namespace string
if len(name) > 0 && name[len(name)-1] == '/' {
name = name[:len(name)-1]
}
index := strings.LastIndex(name, "/")
if index != -1 {
namespace = name[:index]
Expand Down
6 changes: 4 additions & 2 deletions pkg/sbom/spdx/marshal.go
Original file line number Diff line number Diff line change
Expand Up @@ -321,11 +321,13 @@ func (m *Marshaler) pkgToSpdxPackage(t, pkgDownloadLocation string, class types.
pkgSrcInfo = fmt.Sprintf("%s: %s %s", SourcePackagePrefix, pkg.SrcName, utils.FormatSrcVersion(pkg))
}

var pkgExtRefs []*spdx.PackageExternalReference
packageURL, err := purl.NewPackageURL(t, metadata, pkg)
if err != nil {
return spdx.Package{}, xerrors.Errorf("failed to parse purl (%s): %w", pkg.Name, err)
} else if packageURL.Type != "" {
}

var pkgExtRefs []*spdx.PackageExternalReference
if packageURL.Type != "" {
pkgExtRefs = []*spdx.PackageExternalReference{purlExternalReference(packageURL.String())}
}

Expand Down

0 comments on commit 775c596

Please sign in to comment.