func deduplicateFilters()

in internal/loader/configuration_setting_loader.go [712:746]


func deduplicateFilters(filters []acpv1.Selector) []acpv1.Selector {
	var result []acpv1.Selector
	findDuplicate := false

	if len(filters) > 0 {
		//
		// Deduplicate the filters in a way that in honor of what user tell us
		// If user populate the selectors with  `{KeyFilter: "one*", LabelFilter: "prod"}, {KeyFilter: "two*", LabelFilter: "dev"}, {KeyFilter: "one*", LabelFilter: "prod"}`
		// We deduplicate it into `{KeyFilter: "two*", LabelFilter: "dev"}, {KeyFilter: "one*", LabelFilter: "prod"}`
		// not `{KeyFilter: "one*", LabelFilter: "prod"}, {KeyFilter: "two*", LabelFilter: "dev"}`
		for i := len(filters) - 1; i >= 0; i-- {
			findDuplicate = false
			for j := 0; j < len(result); j++ {
				if compare(result[j].KeyFilter, filters[i].KeyFilter) &&
					compare(result[j].LabelFilter, filters[i].LabelFilter) &&
					compare(result[j].SnapshotName, filters[i].SnapshotName) {
					findDuplicate = true
					break
				}
			}
			if !findDuplicate {
				result = append(result, filters[i])
			}
		}
		reverse(result)
	} else {
		wildcard := "*"
		result = append(result, acpv1.Selector{
			KeyFilter:   &wildcard,
			LabelFilter: nil,
		})
	}

	return result
}