mirror of
https://github.com/anchore/syft.git
synced 2026-11-02 07:26:34 +01:00
Extract language and package type from pURLs on SBOM decode (#777)
* add language detection from pURLs Signed-off-by: Alex Goodman <alex.goodman@anchore.com> * add package type detection from pURLs Signed-off-by: Alex Goodman <alex.goodman@anchore.com> * add cargo and npm pURL support Signed-off-by: Alex Goodman <alex.goodman@anchore.com> * fix npm tests and linting Signed-off-by: Alex Goodman <alex.goodman@anchore.com>
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
package pkg
|
||||
|
||||
import "github.com/anchore/packageurl-go"
|
||||
|
||||
// Language represents a single programming language.
|
||||
type Language string
|
||||
|
||||
@@ -30,3 +32,29 @@ var AllLanguages = []Language{
|
||||
func (l Language) String() string {
|
||||
return string(l)
|
||||
}
|
||||
|
||||
func LanguageFromPURL(p string) Language {
|
||||
purl, err := packageurl.FromString(p)
|
||||
if err != nil {
|
||||
return UnknownLanguage
|
||||
}
|
||||
|
||||
switch purl.Type {
|
||||
case packageurl.TypeMaven, purlGradlePkgType:
|
||||
return Java
|
||||
case packageurl.TypeComposer:
|
||||
return PHP
|
||||
case packageurl.TypeGolang:
|
||||
return Go
|
||||
case packageurl.TypeNPM:
|
||||
return JavaScript
|
||||
case packageurl.TypePyPi:
|
||||
return Python
|
||||
case packageurl.TypeGem:
|
||||
return Ruby
|
||||
case purlCargoPkgType:
|
||||
return Rust
|
||||
default:
|
||||
return UnknownLanguage
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user