Add CycloneDX decoder (#811)

This commit is contained in:
Keith Zantow
2022-02-18 11:19:02 -05:00
committed by GitHub
parent 4b16737b2f
commit 20c1d14f6e
34 changed files with 1027 additions and 66 deletions
@@ -1,14 +1,12 @@
package rust
import "github.com/anchore/syft/syft/pkg"
package pkg
type CargoMetadata struct {
Packages []pkg.CargoPackageMetadata `toml:"package"`
Packages []CargoPackageMetadata `toml:"package"`
}
// Pkgs returns all of the packages referenced within the Cargo.lock metadata.
func (m CargoMetadata) Pkgs() []*pkg.Package {
pkgs := make([]*pkg.Package, 0)
func (m CargoMetadata) Pkgs() []*Package {
pkgs := make([]*Package, 0)
for _, p := range m.Packages {
if p.Dependencies == nil {
+1 -1
View File
@@ -20,7 +20,7 @@ func parseCargoLock(_ string, reader io.Reader) ([]*pkg.Package, []artifact.Rela
return nil, nil, fmt.Errorf("unable to load Cargo.lock for parsing: %v", err)
}
metadata := CargoMetadata{}
metadata := pkg.CargoMetadata{}
err = tree.Unmarshal(&metadata)
if err != nil {
return nil, nil, fmt.Errorf("unable to parse Cargo.lock: %v", err)
+18
View File
@@ -1,5 +1,9 @@
package pkg
import (
"reflect"
)
// MetadataType represents the data shape stored within pkg.Package.Metadata.
type MetadataType string
@@ -33,3 +37,17 @@ var AllMetadataTypes = []MetadataType{
GolangBinMetadataType,
PhpComposerJSONMetadataType,
}
var MetadataTypeByName = map[MetadataType]reflect.Type{
ApkMetadataType: reflect.TypeOf(ApkMetadata{}),
DpkgMetadataType: reflect.TypeOf(DpkgMetadata{}),
GemMetadataType: reflect.TypeOf(GemMetadata{}),
JavaMetadataType: reflect.TypeOf(JavaMetadata{}),
NpmPackageJSONMetadataType: reflect.TypeOf(NpmPackageJSONMetadata{}),
RpmdbMetadataType: reflect.TypeOf(RpmdbMetadata{}),
PythonPackageMetadataType: reflect.TypeOf(PythonPackageMetadata{}),
RustCargoPackageMetadataType: reflect.TypeOf(CargoMetadata{}),
KbPackageMetadataType: reflect.TypeOf(KbPackageMetadata{}),
GolangBinMetadataType: reflect.TypeOf(GolangBinMetadata{}),
PhpComposerJSONMetadataType: reflect.TypeOf(PhpComposerJSONMetadata{}),
}