github.com/lineaje-labs/syft@v0.98.1-0.20231227153149-9e393f60ff1b/syft/format/syftjson/model/linux_release.go (about)

     1  package model
     2  
     3  import (
     4  	"encoding/json"
     5  )
     6  
     7  type IDLikes []string
     8  
     9  type LinuxRelease struct {
    10  	PrettyName       string  `json:"prettyName,omitempty"`
    11  	Name             string  `json:"name,omitempty"`
    12  	ID               string  `json:"id,omitempty"`
    13  	IDLike           IDLikes `json:"idLike,omitempty"`
    14  	Version          string  `json:"version,omitempty"`
    15  	VersionID        string  `json:"versionID,omitempty"`
    16  	VersionCodename  string  `json:"versionCodename,omitempty"`
    17  	BuildID          string  `json:"buildID,omitempty"`
    18  	ImageID          string  `json:"imageID,omitempty"`
    19  	ImageVersion     string  `json:"imageVersion,omitempty"`
    20  	Variant          string  `json:"variant,omitempty"`
    21  	VariantID        string  `json:"variantID,omitempty"`
    22  	HomeURL          string  `json:"homeURL,omitempty"`
    23  	SupportURL       string  `json:"supportURL,omitempty"`
    24  	BugReportURL     string  `json:"bugReportURL,omitempty"`
    25  	PrivacyPolicyURL string  `json:"privacyPolicyURL,omitempty"`
    26  	CPEName          string  `json:"cpeName,omitempty"`
    27  	SupportEnd       string  `json:"supportEnd,omitempty"`
    28  }
    29  
    30  func (s *IDLikes) UnmarshalJSON(data []byte) error {
    31  	var str string
    32  	var strSlice []string
    33  
    34  	// we support unmarshalling from a single value to support syft json schema v2
    35  	if err := json.Unmarshal(data, &str); err == nil {
    36  		*s = []string{str}
    37  	} else if err := json.Unmarshal(data, &strSlice); err == nil {
    38  		*s = strSlice
    39  	} else {
    40  		return err
    41  	}
    42  	return nil
    43  }