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 }