diff --git a/pkg/workflow/domains.go b/pkg/workflow/domains.go index 2a70779086..b2659ceb07 100644 --- a/pkg/workflow/domains.go +++ b/pkg/workflow/domains.go @@ -4,6 +4,8 @@ import ( _ "embed" "encoding/json" "fmt" + "maps" + "slices" "sort" "strings" @@ -294,11 +296,7 @@ func getEcosystemDomains(category string) []string { domainMap[d] = true } } - result := make([]string, 0, len(domainMap)) - for d := range domainMap { - result = append(result, d) - } - sort.Strings(result) + result := slices.Sorted(maps.Keys(domainMap)) return result } @@ -363,14 +361,7 @@ func getDomainsFromRuntimes(runtimes map[string]any) []string { } } - // Convert map to sorted slice - result := make([]string, 0, len(domainMap)) - for domain := range domainMap { - result = append(result, domain) - } - sort.Strings(result) - - return result + return slices.Sorted(maps.Keys(domainMap)) } // GetAllowedDomains returns the allowed domains from network permissions. @@ -465,14 +456,7 @@ func GetAllowedDomains(network *NetworkPermissions) []string { } } - // Convert map to sorted slice - expandedDomains := make([]string, 0, len(domainMap)) - for domain := range domainMap { - expandedDomains = append(expandedDomains, domain) - } - sort.Strings(expandedDomains) - - return expandedDomains + return slices.Sorted(maps.Keys(domainMap)) } // ecosystemPriority defines the order in which ecosystems are checked by GetDomainEcosystem. @@ -681,12 +665,7 @@ func mergeDomainsWithNetworkToolsAndRuntimes(defaultDomains []string, network *N } } - // Convert to sorted slice for consistent output - domains := make([]string, 0, len(domainMap)) - for domain := range domainMap { - domains = append(domains, domain) - } - sort.Strings(domains) + domains := slices.Sorted(maps.Keys(domainMap)) // Join with commas for AWF --allow-domains flag return strings.Join(domains, ",") @@ -812,14 +791,7 @@ func GetBlockedDomains(network *NetworkPermissions) []string { } } - // Convert map to sorted slice - expandedDomains := make([]string, 0, len(domainMap)) - for domain := range domainMap { - expandedDomains = append(expandedDomains, domain) - } - sort.Strings(expandedDomains) - - return expandedDomains + return slices.Sorted(maps.Keys(domainMap)) } // formatBlockedDomains formats blocked domains as a comma-separated string suitable for AWF's --block-domains flag @@ -885,12 +857,7 @@ func mergeAPITargetDomains(domainsStr string, apiTarget string) string { domainMap[d] = true } - result := make([]string, 0, len(domainMap)) - for d := range domainMap { - result = append(result, d) - } - sort.Strings(result) - return strings.Join(result, ",") + return strings.Join(slices.Sorted(maps.Keys(domainMap)), ",") } // computeAllowedDomainsForSanitization computes the allowed domains for sanitization @@ -964,12 +931,7 @@ func expandAllowedDomains(entries []string) []string { domainMap[entry] = true } } - result := make([]string, 0, len(domainMap)) - for d := range domainMap { - result = append(result, d) - } - sort.Strings(result) - return result + return slices.Sorted(maps.Keys(domainMap)) } // computeExpandedAllowedDomainsForSanitization computes the allowed domains for URL sanitization, @@ -1006,10 +968,5 @@ func (c *Compiler) computeExpandedAllowedDomainsForSanitization(data *WorkflowDa domainMap["github.com"] = true // Produce a sorted, comma-separated result - result := make([]string, 0, len(domainMap)) - for d := range domainMap { - result = append(result, d) - } - sort.Strings(result) - return strings.Join(result, ",") + return strings.Join(slices.Sorted(maps.Keys(domainMap)), ",") } diff --git a/pkg/workflow/map_helpers.go b/pkg/workflow/map_helpers.go index c0133fbe11..7f612c7bda 100644 --- a/pkg/workflow/map_helpers.go +++ b/pkg/workflow/map_helpers.go @@ -33,7 +33,10 @@ package workflow -import "sort" +import ( + "maps" + "slices" +) // excludeMapKeys creates a new map excluding the specified keys func excludeMapKeys(original map[string]any, excludeKeys ...string) map[string]any { @@ -54,10 +57,5 @@ func excludeMapKeys(original map[string]any, excludeKeys ...string) map[string]a // sortedMapKeys returns the keys of a map[string]string in sorted order. // Used to produce deterministic output when writing environment variables. func sortedMapKeys(m map[string]string) []string { - keys := make([]string, 0, len(m)) - for k := range m { - keys = append(keys, k) - } - sort.Strings(keys) - return keys + return slices.Sorted(maps.Keys(m)) }