github.com/anchore/syft@v1.38.2/syft/format/internal/cyclonedxutil/decoder.go (about) 1 package cyclonedxutil 2 3 import ( 4 "io" 5 6 "github.com/CycloneDX/cyclonedx-go" 7 ) 8 9 type Decoder struct { 10 format cyclonedx.BOMFileFormat 11 } 12 13 func NewDecoder(format cyclonedx.BOMFileFormat) Decoder { 14 return Decoder{ 15 format: format, 16 } 17 } 18 19 func (d Decoder) Decode(r io.Reader) (*cyclonedx.BOM, error) { 20 doc := &cyclonedx.BOM{ 21 Components: &[]cyclonedx.Component{}, 22 } 23 err := cyclonedx.NewBOMDecoder(r, d.format).Decode(doc) 24 if err != nil { 25 return nil, err 26 } 27 28 return doc, nil 29 }