github.com/lineaje-labs/syft@v0.98.1-0.20231227153149-9e393f60ff1b/cmd/syft/cli/options/format_cyclonedx_xml.go (about) 1 package options 2 3 import ( 4 "github.com/hashicorp/go-multierror" 5 6 "github.com/anchore/syft/syft/format/cyclonedxxml" 7 "github.com/anchore/syft/syft/sbom" 8 ) 9 10 type FormatCyclonedxXML struct { 11 Pretty *bool `yaml:"pretty" json:"pretty" mapstructure:"pretty"` 12 } 13 14 func DefaultFormatCyclonedxXML() FormatCyclonedxXML { 15 return FormatCyclonedxXML{} 16 } 17 18 func (o FormatCyclonedxXML) formatEncoders() ([]sbom.FormatEncoder, error) { 19 var ( 20 encs []sbom.FormatEncoder 21 errs error 22 ) 23 for _, v := range cyclonedxxml.SupportedVersions() { 24 enc, err := cyclonedxxml.NewFormatEncoderWithConfig(o.buildConfig(v)) 25 if err != nil { 26 errs = multierror.Append(errs, err) 27 } else { 28 encs = append(encs, enc) 29 } 30 } 31 return encs, errs 32 } 33 34 func (o FormatCyclonedxXML) buildConfig(version string) cyclonedxxml.EncoderConfig { 35 var pretty bool 36 if o.Pretty != nil { 37 pretty = *o.Pretty 38 } 39 return cyclonedxxml.EncoderConfig{ 40 Version: version, 41 Pretty: pretty, 42 } 43 }