github.com/pf-qiu/concourse/v6@v6.7.3-0.20201207032516-1f455d73275f/fly/commands/internal/hijackhelpers/container_sorter.go (about)

     1  package hijackhelpers
     2  
     3  import (
     4  	"strings"
     5  
     6  	"github.com/pf-qiu/concourse/v6/atc"
     7  )
     8  
     9  type ContainerSorter []atc.Container
    10  
    11  func (sorter ContainerSorter) Len() int {
    12  	return len(sorter)
    13  }
    14  
    15  func (sorter ContainerSorter) Swap(i, j int) {
    16  	sorter[i], sorter[j] = sorter[j], sorter[i]
    17  }
    18  
    19  func (sorter ContainerSorter) Less(i, j int) bool {
    20  	switch {
    21  	case sorter[i].BuildID < sorter[j].BuildID:
    22  		return true
    23  	case sorter[i].BuildID > sorter[j].BuildID:
    24  		return false
    25  	case strings.Compare(sorter[i].ResourceName, sorter[j].ResourceName) == -1:
    26  		return true
    27  	case strings.Compare(sorter[i].ResourceName, sorter[j].ResourceName) == 1:
    28  		return false
    29  	case strings.Compare(sorter[i].StepName, sorter[j].StepName) == -1:
    30  		return true
    31  	case strings.Compare(sorter[i].StepName, sorter[j].StepName) == 1:
    32  		return false
    33  	case strings.Compare(sorter[i].Type, sorter[j].Type) == -1:
    34  		return true
    35  	default:
    36  		return false
    37  	}
    38  }