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  }