1package v2 2 3// automatically generated file, do not edit! 4 5import ( 6 "fmt" 7 "reflect" 8) 9 10// typeMap is used to dynamically look up data types from strings. 11var typeMap = map[string]interface{}{ {{ range $index, $typename := .TypeNames }} 12 "{{ $typename }}": &{{ $typename }}{}, 13 "{{ snakeCase $typename }}": &{{ $typename }}{}, {{ end }} 14} 15 16// ResolveResource returns a zero-valued resource, given a name. 17// If the named type does not exist, or if the type is not a Resource, 18// then an error will be returned. 19func ResolveResource(name string) (Resource, error) { 20 t, ok := typeMap[name] 21 if !ok { 22 return nil, fmt.Errorf("type could not be found: %q", name) 23 } 24 if _, ok := t.(Resource); !ok { 25 return nil, fmt.Errorf("%q is not a Resource", name) 26 } 27 return newResource(t), nil 28} 29 30// Make a new Resource to avoid aliasing problems with ResolveResource. 31// don't use this function. no, seriously. 32func newResource(r interface{}) Resource { 33 return reflect.New(reflect.ValueOf(r).Elem().Type()).Interface().(Resource) 34} 35