From 01c0ffbdf6f30b78b76d6a3684fe02f15069514b Mon Sep 17 00:00:00 2001 From: Jaime Soriano Pastor Date: Tue, 12 Sep 2023 17:12:22 +0200 Subject: [PATCH] Use slices to check if a slice contains a string --- internal/certs/certs.go | 5 ++--- internal/common/helpers.go | 17 ++++------------ internal/common/helpers_test.go | 21 -------------------- internal/dump/agentpolicies.go | 4 ++-- internal/dump/indextemplates.go | 4 ++-- internal/dump/ingestpipelines.go | 6 +++--- internal/dump/installedobjects.go | 8 ++++---- internal/fields/model.go | 3 ++- internal/fields/validate.go | 5 +++-- internal/stack/serverless.go | 4 ++-- internal/testrunner/runners/system/runner.go | 3 ++- 11 files changed, 26 insertions(+), 54 deletions(-) diff --git a/internal/certs/certs.go b/internal/certs/certs.go index c985319e9c..b0b901e3e7 100644 --- a/internal/certs/certs.go +++ b/internal/certs/certs.go @@ -21,10 +21,9 @@ import ( "net" "os" "path/filepath" + "slices" "strings" "time" - - "github.com/elastic/elastic-package/internal/common" ) // Certificate contains the key and certificate for an issued certificate. @@ -133,7 +132,7 @@ type Option func(template *x509.Certificate) func WithName(name string) Option { return func(template *x509.Certificate) { template.Subject.CommonName = name - if !common.StringSliceContains(template.DNSNames, name) { + if !slices.Contains(template.DNSNames, name) { template.DNSNames = append(template.DNSNames, name) } } diff --git a/internal/common/helpers.go b/internal/common/helpers.go index 218b5e712f..c03f7f4098 100644 --- a/internal/common/helpers.go +++ b/internal/common/helpers.go @@ -6,6 +6,7 @@ package common import ( "fmt" + "slices" "strings" ) @@ -16,22 +17,12 @@ func TrimStringSlice(slice []string) { } } -// StringSliceContains checks if the slice contains the given string. -func StringSliceContains(slice []string, s string) bool { - for i := range slice { - if slice[i] == s { - return true - } - } - return false -} - // StringSlicesUnion joins multiple slices and returns an slice with the distinct // elements of all of them. -func StringSlicesUnion(slices ...[]string) (result []string) { - for _, slice := range slices { +func StringSlicesUnion(ss ...[]string) (result []string) { + for _, slice := range ss { for _, elem := range slice { - if StringSliceContains(result, elem) { + if slices.Contains(result, elem) { continue } result = append(result, elem) diff --git a/internal/common/helpers_test.go b/internal/common/helpers_test.go index 1474419b0d..21f1864c6f 100644 --- a/internal/common/helpers_test.go +++ b/internal/common/helpers_test.go @@ -19,27 +19,6 @@ func TestTrimStringSlice(t *testing.T) { require.Equal(t, expected, strs) } -func TestStringSliceContains(t *testing.T) { - cases := []struct { - slice []string - s string - expected bool - }{ - {nil, "", false}, - {nil, "foo", false}, - {[]string{"foo"}, "foo", true}, - {[]string{"foo", "bar"}, "foo", true}, - {[]string{"foo", "bar"}, "bar", true}, - {[]string{"foo", "bar"}, "foobar", false}, - {[]string{"foo", "bar"}, "fo", false}, - } - - for _, c := range cases { - found := StringSliceContains(c.slice, c.s) - assert.Equalf(t, c.expected, found, "checking if slice %v contains '%s'", c.slice, c.s) - } -} - func TestStringSlicesUnion(t *testing.T) { cases := []struct { slices [][]string diff --git a/internal/dump/agentpolicies.go b/internal/dump/agentpolicies.go index 579360bfdb..b2746c13a6 100644 --- a/internal/dump/agentpolicies.go +++ b/internal/dump/agentpolicies.go @@ -9,8 +9,8 @@ import ( "encoding/json" "fmt" "path/filepath" + "slices" - "github.com/elastic/elastic-package/internal/common" "github.com/elastic/elastic-package/internal/kibana" ) @@ -106,7 +106,7 @@ func (d *AgentPoliciesDumper) getAgentPoliciesFilteredByPackage(ctx context.Cont } if packageName != "" { packageNames := getPackagesUsingAgentPolicy(policyPackages.PackagePolicies) - if !common.StringSliceContains(packageNames, packageName) { + if !slices.Contains(packageNames, packageName) { continue } } diff --git a/internal/dump/indextemplates.go b/internal/dump/indextemplates.go index fd321c7486..5010c06b95 100644 --- a/internal/dump/indextemplates.go +++ b/internal/dump/indextemplates.go @@ -9,8 +9,8 @@ import ( "encoding/json" "fmt" "io" + "slices" - "github.com/elastic/elastic-package/internal/common" "github.com/elastic/elastic-package/internal/elasticsearch" ) @@ -111,5 +111,5 @@ func getIndexTemplatesForPackage(ctx context.Context, api *elasticsearch.API, pa func managedByFleet(managedBy string) bool { var managers = []string{"ingest-manager", "fleet"} - return common.StringSliceContains(managers, managedBy) + return slices.Contains(managers, managedBy) } diff --git a/internal/dump/ingestpipelines.go b/internal/dump/ingestpipelines.go index 32b5e24143..71fc083b65 100644 --- a/internal/dump/ingestpipelines.go +++ b/internal/dump/ingestpipelines.go @@ -9,8 +9,8 @@ import ( "encoding/json" "fmt" "io" + "slices" - "github.com/elastic/elastic-package/internal/common" "github.com/elastic/elastic-package/internal/elasticsearch" ) @@ -105,10 +105,10 @@ func pendingNestedPipelines(pipelines []IngestPipeline, collected []string) []st continue } name := processor.Pipeline.Name - if common.StringSliceContains(collected, name) { + if slices.Contains(collected, name) { continue } - if common.StringSliceContains(names, name) { + if slices.Contains(names, name) { continue } names = append(names, name) diff --git a/internal/dump/installedobjects.go b/internal/dump/installedobjects.go index 5bbcf9f78f..14b39eba36 100644 --- a/internal/dump/installedobjects.go +++ b/internal/dump/installedobjects.go @@ -8,8 +8,8 @@ import ( "context" "fmt" "path/filepath" + "slices" - "github.com/elastic/elastic-package/internal/common" "github.com/elastic/elastic-package/internal/elasticsearch" ) @@ -137,7 +137,7 @@ func getComponentTemplatesFromIndexTemplates(indexTemplates []IndexTemplate) []s continue } for _, ct := range composedOf { - if !common.StringSliceContains(templates, ct) { + if !slices.Contains(templates, ct) { templates = append(templates, ct) } } @@ -182,7 +182,7 @@ func getILMPoliciesFromTemplates(templates []TemplateWithSettings) []string { var policies []string for _, template := range templates { name := template.TemplateSettings().Index.Lifecycle.Name - if name != "" && !common.StringSliceContains(policies, name) { + if name != "" && !slices.Contains(policies, name) { policies = append(policies, name) } } @@ -260,7 +260,7 @@ func getIngestPipelinesFromTemplates(templates []TemplateWithSettings) []string if pipeline == "" { continue } - if common.StringSliceContains(pipelines, pipeline) { + if slices.Contains(pipelines, pipeline) { continue } pipelines = append(pipelines, pipeline) diff --git a/internal/fields/model.go b/internal/fields/model.go index 13ce51c1df..6c19104a2e 100644 --- a/internal/fields/model.go +++ b/internal/fields/model.go @@ -6,6 +6,7 @@ package fields import ( "fmt" + "slices" "strings" "gopkg.in/yaml.v3" @@ -211,7 +212,7 @@ func (avs AllowedValues) IsAllowed(value string) bool { // No configured allowed values, any value is allowed. return true } - return common.StringSliceContains(avs.Values(), value) + return slices.Contains(avs.Values(), value) } // Values returns the list of allowed values. diff --git a/internal/fields/validate.go b/internal/fields/validate.go index 9cb1885692..60cde3248c 100644 --- a/internal/fields/validate.go +++ b/internal/fields/validate.go @@ -14,6 +14,7 @@ import ( "os" "path/filepath" "regexp" + "slices" "sort" "strings" @@ -882,7 +883,7 @@ func ensureAllowedValues(key, value string, definition FieldDefinition) error { if !definition.AllowedValues.IsAllowed(value) { return fmt.Errorf("field %q's value %q is not one of the allowed values (%s)", key, value, strings.Join(definition.AllowedValues.Values(), ", ")) } - if e := definition.ExpectedValues; len(e) > 0 && !common.StringSliceContains(e, value) { + if e := definition.ExpectedValues; len(e) > 0 && !slices.Contains(e, value) { return fmt.Errorf("field %q's value %q is not one of the expected values (%s)", key, value, strings.Join(e, ", ")) } return nil @@ -906,7 +907,7 @@ func ensureExpectedEventType(key string, values []string, definition FieldDefini return nil } for _, eventType := range eventTypes { - if !common.StringSliceContains(expected, eventType) { + if !slices.Contains(expected, eventType) { return fmt.Errorf("field \"event.type\" value %q is not one of the expected values (%s) for any of the values of %q (%s)", eventType, strings.Join(expected, ", "), key, strings.Join(values, ", ")) } } diff --git a/internal/stack/serverless.go b/internal/stack/serverless.go index 565ceeebb3..7119f6c7f0 100644 --- a/internal/stack/serverless.go +++ b/internal/stack/serverless.go @@ -8,10 +8,10 @@ import ( "context" "errors" "fmt" + "slices" "strings" "time" - "github.com/elastic/elastic-package/internal/common" "github.com/elastic/elastic-package/internal/compose" "github.com/elastic/elastic-package/internal/docker" "github.com/elastic/elastic-package/internal/elasticsearch" @@ -229,7 +229,7 @@ func (sp *serverlessProvider) BootUp(options Options) error { return err } - if !common.StringSliceContains(allowedProjectTypes, settings.Type) { + if !slices.Contains(allowedProjectTypes, settings.Type) { return fmt.Errorf("serverless project type not supported: %s", settings.Type) } diff --git a/internal/testrunner/runners/system/runner.go b/internal/testrunner/runners/system/runner.go index a6cc8e316d..e9eaf11e6b 100644 --- a/internal/testrunner/runners/system/runner.go +++ b/internal/testrunner/runners/system/runner.go @@ -12,6 +12,7 @@ import ( "os" "path/filepath" "regexp" + "slices" "strings" "time" @@ -949,7 +950,7 @@ func findPolicyTemplateForDataStream(pkg packages.PackageManifest, ds packages.D } // Does the policy_template apply to this data stream (when data streams are specified)? - if len(policyTemplate.DataStreams) > 0 && !common.StringSliceContains(policyTemplate.DataStreams, ds.Name) { + if len(policyTemplate.DataStreams) > 0 && !slices.Contains(policyTemplate.DataStreams, ds.Name) { continue }