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  }