github.com/pf-qiu/concourse/v6@v6.7.3-0.20201207032516-1f455d73275f/atc/versioned_resource_types.go (about) 1 package atc 2 3 type VersionedResourceType struct { 4 ResourceType 5 6 Version Version `json:"version"` 7 } 8 9 type VersionedResourceTypes []VersionedResourceType 10 11 func (types VersionedResourceTypes) Lookup(name string) (VersionedResourceType, bool) { 12 for _, t := range types { 13 if t.Name == name { 14 return t, true 15 } 16 } 17 18 return VersionedResourceType{}, false 19 } 20 21 func (types VersionedResourceTypes) Without(name string) VersionedResourceTypes { 22 newTypes := VersionedResourceTypes{} 23 for _, t := range types { 24 if t.Name != name { 25 newTypes = append(newTypes, t) 26 } 27 } 28 29 return newTypes 30 } 31 32 func (types VersionedResourceTypes) Base(name string) string { 33 base := name 34 for { 35 resourceType, found := types.Lookup(base) 36 if !found { 37 break 38 } 39 40 types = types.Without(base) 41 base = resourceType.Type 42 } 43 44 return base 45 }