mirror of
https://github.com/anchore/syft.git
synced 2026-03-30 13:43:25 +02:00
--------- Signed-off-by: Christopher Phillips <32073428+spiffcs@users.noreply.github.com>
48 lines
1.6 KiB
Go
48 lines
1.6 KiB
Go
package options
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/anchore/clio"
|
|
"github.com/anchore/syft/internal"
|
|
"github.com/anchore/syft/syft/cataloging"
|
|
)
|
|
|
|
type licenseConfig struct {
|
|
Content cataloging.LicenseContent `yaml:"content" json:"content" mapstructure:"content"`
|
|
Coverage float64 `yaml:"coverage" json:"coverage" mapstructure:"coverage"`
|
|
AvailableLicenseContent []cataloging.LicenseContent `yaml:"-" json:"-" mapstructure:"-"`
|
|
}
|
|
|
|
var _ interface {
|
|
clio.FieldDescriber
|
|
} = (*licenseConfig)(nil)
|
|
|
|
func (o *licenseConfig) DescribeFields(descriptions clio.FieldDescriptionSet) {
|
|
descriptions.Add(&o.Content, fmt.Sprintf("include the content of licenses in the SBOM for a given syft scan; valid values are: %s", o.AvailableLicenseContent))
|
|
|
|
descriptions.Add(&o.Coverage, `adjust the percent as a fraction of the total text, in normalized words, that
|
|
matches any valid license for the given inputs, expressed as a percentage across all of the licenses matched.`)
|
|
}
|
|
|
|
func (o *licenseConfig) PostLoad() error {
|
|
validContent := internal.NewSet(o.AvailableLicenseContent...)
|
|
if !validContent.Contains(o.Content) {
|
|
return fmt.Errorf("could not use %q as license content option; valid values are: %v", o.Content, validContent.ToSlice())
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func defaultLicenseConfig() licenseConfig {
|
|
cfg := cataloging.DefaultLicenseConfig()
|
|
return licenseConfig{
|
|
Content: cfg.IncludeContent,
|
|
Coverage: cfg.Coverage,
|
|
AvailableLicenseContent: []cataloging.LicenseContent{
|
|
cataloging.LicenseContentIncludeAll,
|
|
cataloging.LicenseContentIncludeUnknown,
|
|
cataloging.LicenseContentExcludeAll,
|
|
},
|
|
}
|
|
}
|