github.com/vchain-us/vcn@v0.9.11-0.20210921212052-a2484d23c0b3/pkg/bom/purl.go (about)

     1  /*
     2   * Copyright (c) 2021 CodeNotary, Inc. All Rights Reserved.
     3   * This software is released under GPL3.
     4   * The full license information can be found under:
     5   * https://www.gnu.org/licenses/gpl-3.0.en.html
     6   *
     7   */
     8  
     9  package bom
    10  
    11  import (
    12  	purl "github.com/package-url/packageurl-go"
    13  	"github.com/vchain-us/vcn/pkg/bom/artifact"
    14  	"github.com/vchain-us/vcn/pkg/bom/docker"
    15  	"github.com/vchain-us/vcn/pkg/bom/dotnet"
    16  	"github.com/vchain-us/vcn/pkg/bom/golang"
    17  	"github.com/vchain-us/vcn/pkg/bom/java"
    18  	"github.com/vchain-us/vcn/pkg/bom/node"
    19  	"github.com/vchain-us/vcn/pkg/bom/python"
    20  )
    21  
    22  var typeMap = map[string]string{
    23  	golang.AssetType: purl.TypeGolang,
    24  	java.AssetType:   purl.TypeMaven,
    25  	dotnet.AssetType: purl.TypeNuget,
    26  	python.AssetType: purl.TypePyPi,
    27  	node.AssetType:   purl.TypeNPM,
    28  	docker.DPKG:      purl.TypeDebian,
    29  	docker.RPM:       purl.TypeRPM,
    30  }
    31  
    32  func Purl(a artifact.Artifact, d artifact.Dependency) string {
    33  	assetType := d.Kind
    34  	if assetType == "" {
    35  		assetType = a.Type()
    36  	}
    37  	assetType, ok := typeMap[assetType]
    38  	if !ok {
    39  		assetType = purl.TypeGeneric
    40  	}
    41  	return purl.NewPackageURL(assetType, "", d.Name, d.Version, nil, "").ToString()
    42  }