github.com/anchore/syft@v1.38.2/internal/sourcemetadata/names.go (about) 1 package sourcemetadata 2 3 import ( 4 "reflect" 5 "strings" 6 7 "github.com/anchore/syft/syft/source" 8 ) 9 10 var jsonNameFromType = map[reflect.Type][]string{ 11 reflect.TypeOf(source.DirectoryMetadata{}): {"directory", "dir"}, 12 reflect.TypeOf(source.FileMetadata{}): {"file"}, 13 reflect.TypeOf(source.ImageMetadata{}): {"image"}, 14 reflect.TypeOf(source.SnapMetadata{}): {"snap"}, 15 } 16 17 func AllTypeNames() []string { 18 names := make([]string, 0) 19 for _, t := range AllTypes() { 20 names = append(names, reflect.TypeOf(t).Name()) 21 } 22 return names 23 } 24 25 func JSONName(metadata any) string { 26 if vs, exists := jsonNameFromType[reflect.TypeOf(metadata)]; exists { 27 return vs[0] 28 } 29 return "" 30 } 31 32 func ReflectTypeFromJSONName(name string) reflect.Type { 33 name = strings.ToLower(name) 34 for t, vs := range jsonNameFromType { 35 for _, v := range vs { 36 if strings.ToLower(v) == name { 37 return t 38 } 39 } 40 } 41 return nil 42 }