github.com/noqcks/syft@v0.0.0-20230920222752-a9e2c4e288e5/syft/pkg/alpm_metadata.go (about) 1 package pkg 2 3 import ( 4 "sort" 5 "time" 6 7 "github.com/scylladb/go-set/strset" 8 9 "github.com/anchore/syft/syft/file" 10 ) 11 12 var _ FileOwner = (*AlpmMetadata)(nil) 13 14 const AlpmDBGlob = "**/var/lib/pacman/local/**/desc" 15 16 type AlpmMetadata struct { 17 BasePackage string `mapstructure:"base" json:"basepackage" cyclonedx:"basepackage"` 18 Package string `mapstructure:"name" json:"package" cyclonedx:"package"` 19 Version string `mapstructure:"version" json:"version" cyclonedx:"version"` 20 Description string `mapstructure:"desc" json:"description" cyclonedx:"description"` 21 Architecture string `mapstructure:"arch" json:"architecture" cyclonedx:"architecture"` 22 Size int `mapstructure:"size" json:"size" cyclonedx:"size"` 23 Packager string `mapstructure:"packager" json:"packager"` 24 URL string `mapstructure:"url" json:"url"` 25 Validation string `mapstructure:"validation" json:"validation"` 26 Reason int `mapstructure:"reason" json:"reason"` 27 Files []AlpmFileRecord `mapstructure:"files" json:"files"` 28 Backup []AlpmFileRecord `mapstructure:"backup" json:"backup"` 29 } 30 31 type AlpmFileRecord struct { 32 Path string `mapstruture:"path" json:"path,omitempty"` 33 Type string `mapstructure:"type" json:"type,omitempty"` 34 UID string `mapstructure:"uid" json:"uid,omitempty"` 35 GID string `mapstructure:"gid" json:"gid,omitempty"` 36 Time time.Time `mapstructure:"time" json:"time,omitempty"` 37 Size string `mapstructure:"size" json:"size,omitempty"` 38 Link string `mapstructure:"link" json:"link,omitempty"` 39 Digests []file.Digest `mapstructure:"digests" json:"digest,omitempty"` 40 } 41 42 func (m AlpmMetadata) OwnedFiles() (result []string) { 43 s := strset.New() 44 for _, f := range m.Files { 45 if f.Path != "" { 46 s.Add(f.Path) 47 } 48 } 49 result = s.List() 50 sort.Strings(result) 51 return result 52 }