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 }