package cluster import "sort" // SortRegions sorts regions. first by length those 3-character // or shorter, and then by length. It's mostly aimed at // supporting ISO-3166 order func SortRegions(regions []string) []string { sort.Slice(regions, func(i, j int) bool { r1, r2 := regions[i], regions[j] return regionLess(r1, r2) }) return regions } func regionLess(r1, r2 string) bool { switch { case len(r1) < 4: switch { case len(r1) < len(r2): return true case len(r1) > len(r2): return false default: return r1 < r2 } case len(r2) < 4: return false default: return r1 < r2 } } func (m *Cluster) sortRegions() { sort.Slice(m.Regions, func(i, j int) bool { r1 := m.Regions[i].Name r2 := m.Regions[j].Name return regionLess(r1, r2) }) }