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  }