github.com/anchore/syft@v1.38.2/syft/cataloging/compliance.go (about) 1 package cataloging 2 3 import ( 4 "strings" 5 ) 6 7 const ( 8 ComplianceActionKeep ComplianceAction = "keep" 9 ComplianceActionDrop ComplianceAction = "drop" 10 ComplianceActionStub ComplianceAction = "stub" 11 ) 12 13 const UnknownStubValue = "UNKNOWN" 14 15 type ComplianceAction string 16 17 type ComplianceConfig struct { 18 MissingName ComplianceAction `yaml:"missing-name" json:"missing-name" mapstructure:"missing-name"` 19 MissingVersion ComplianceAction `yaml:"missing-version" json:"missing-version" mapstructure:"missing-version"` 20 } 21 22 func DefaultComplianceConfig() ComplianceConfig { 23 // Note: name and version are required minimum SBOM elements by NTIA, thus should be the API default 24 return ComplianceConfig{ 25 MissingName: ComplianceActionDrop, 26 MissingVersion: ComplianceActionStub, 27 } 28 } 29 30 func (c ComplianceConfig) Parse() ComplianceConfig { 31 return ComplianceConfig{ 32 MissingName: c.MissingName.Parse(), 33 MissingVersion: c.MissingVersion.Parse(), 34 } 35 } 36 37 func (c ComplianceAction) Parse() ComplianceAction { 38 switch strings.ToLower(string(c)) { 39 case string(ComplianceActionKeep), "include": 40 return ComplianceActionKeep 41 case string(ComplianceActionDrop), "exclude": 42 return ComplianceActionDrop 43 case string(ComplianceActionStub), "replace": 44 return ComplianceActionStub 45 } 46 return ComplianceActionKeep 47 }