func sortPullSecrets()

in internal/controller/generic_controller.go [231:276]


func sortPullSecrets(serviceAccount *corev1.ServiceAccount) {
	slices.SortFunc(serviceAccount.ImagePullSecrets, func(a, b corev1.LocalObjectReference) int {
		var aType, bType pullSecretType
		for value, into := range map[string]*pullSecretType{
			a.Name: &aType,
			b.Name: &bType,
		} {
			if isLegacySecretName(value) {
				*into = pullSecretTypeLegacy
			}
			if isSecretName(value) {
				*into = pullSecretTypeCurrent
			}
		}
		switch aType {
		case pullSecretTypeUnrelated:
			switch bType {
			case pullSecretTypeUnrelated:
				return strings.Compare(a.Name, b.Name)
			case pullSecretTypeLegacy:
				return -1
			case pullSecretTypeCurrent:
				return -1
			}
		case pullSecretTypeLegacy:
			switch bType {
			case pullSecretTypeUnrelated:
				return 1
			case pullSecretTypeLegacy:
				return strings.Compare(a.Name, b.Name)
			case pullSecretTypeCurrent:
				return 1
			}
		case pullSecretTypeCurrent:
			switch bType {
			case pullSecretTypeUnrelated:
				return 1
			case pullSecretTypeLegacy:
				return -1
			case pullSecretTypeCurrent:
				return strings.Compare(a.Name, b.Name)
			}
		}
		return strings.Compare(a.Name, b.Name)
	})
}