Skip to content

Commit 2c6d905

Browse files
authored
Use maps and slices functions instead of loops where possible (#565)
Signed-off-by: Caleb Xu <caxu@redhat.com>
1 parent 69beba2 commit 2c6d905

5 files changed

Lines changed: 20 additions & 68 deletions

File tree

cmd/verify.go

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import (
2020
"errors"
2121
"fmt"
2222
"os"
23+
"slices"
2324
"strings"
2425
"time"
2526

@@ -96,14 +97,11 @@ func buildChecks(enabled []string, unEnabled []string) ([]apiChecks.CheckName, [
9697
func convertChecks(checks []string) ([]apiChecks.CheckName, error) {
9798
var apiCheckSet []apiChecks.CheckName
9899
for _, check := range checks {
99-
checkFound := false
100-
for _, checkName := range apiChecks.GetChecks() {
101-
if apiChecks.CheckName(check) == checkName {
102-
apiCheckSet = append(apiCheckSet, checkName)
103-
checkFound = true
104-
}
105-
}
106-
if !checkFound {
100+
checkName := apiChecks.CheckName(check)
101+
checkFound := slices.Contains(apiChecks.GetChecks(), checkName)
102+
if checkFound {
103+
apiCheckSet = append(apiCheckSet, checkName)
104+
} else {
107105
return apiCheckSet, fmt.Errorf("enabled check is invalid :%s", check)
108106
}
109107
}

internal/chartverifier/checks/helm.go

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,14 @@ package checks
1919
import (
2020
"fmt"
2121
"io"
22+
"maps"
2223
"net/http"
2324
"net/url"
2425
"os"
2526
"path"
2627
"path/filepath"
2728
"regexp"
29+
"slices"
2830
"strings"
2931

3032
"helm.sh/helm/v3/pkg/chartutil"
@@ -245,11 +247,7 @@ func getImagesFromContent(content string) ([]string, error) {
245247
imageMap[image] = struct{}{}
246248
}
247249

248-
var images []string
249-
for k := range imageMap {
250-
images = append(images, k)
251-
}
252-
250+
images := slices.Collect(maps.Keys(imageMap))
253251
return images, nil
254252
}
255253

internal/chartverifier/profiles/profile_test.go

Lines changed: 3 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import (
55
"path/filepath"
66
"reflect"
77
"runtime"
8-
"strings"
8+
"slices"
99
"testing"
1010

1111
"github.com/google/go-cmp/cmp"
@@ -45,26 +45,12 @@ func TestProfile(t *testing.T) {
4545
assert.Equal(t, testProfile.Version, diskProfile.Version, "Version mismatch")
4646
assert.Equal(t, len(testProfile.Annotations), len(diskProfile.Annotations), "Annotations number mismatch")
4747
for _, testAnnotation := range testProfile.Annotations {
48-
found := false
49-
for _, diskAnnotation := range diskProfile.Annotations {
50-
if testAnnotation == diskAnnotation {
51-
found = true
52-
break
53-
}
54-
}
48+
found := slices.Contains(diskProfile.Annotations, testAnnotation)
5549
assert.True(t, found, fmt.Sprintf("Annotation not found : %s", testAnnotation))
5650
}
5751
assert.Equal(t, len(testProfile.Checks), len(diskProfile.Checks), "Checks number mismatch")
5852
for _, testCheck := range testProfile.Checks {
59-
found := false
60-
for _, diskCheck := range diskProfile.Checks {
61-
if strings.Compare(testCheck.Name, diskCheck.Name) == 0 {
62-
if testCheck.Type == diskCheck.Type {
63-
found = true
64-
break
65-
}
66-
}
67-
}
53+
found := slices.Contains(diskProfile.Checks, testCheck)
6854
assert.True(t, found, fmt.Sprintf("Check not matched : %s : %s", testCheck.Name, testCheck.Type))
6955
}
7056
assert.True(t, cmp.Equal(diskProfile, testProfile), "profiles do not match")

pkg/chartverifier/reportsummary/reportSummary.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"encoding/json"
55
"errors"
66
"fmt"
7+
"maps"
78
"strings"
89

910
"golang.org/x/mod/semver"
@@ -66,9 +67,7 @@ func (r *ReportSummary) SetReport(report *report.Report) APIReportSummary {
6667
}
6768

6869
func (r *ReportSummary) SetValues(values map[string]interface{}) APIReportSummary {
69-
for key, element := range values {
70-
r.options.values[key] = element
71-
}
70+
maps.Copy(r.options.values, values)
7271
return r
7372
}
7473

pkg/chartverifier/verifier/verifier.go

Lines changed: 6 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ package verifier
1919
import (
2020
"errors"
2121
"fmt"
22+
"slices"
2223
"strings"
2324
"time"
2425

@@ -119,13 +120,7 @@ type APIVerifier interface {
119120
func validateBooleanKeys(v Verifier) error {
120121
var err error
121122
for key := range v.Inputs.Flags.BooleanFlags {
122-
foundElement := false
123-
for _, sliceElement := range setBooleanKeys {
124-
if sliceElement == key {
125-
foundElement = true
126-
continue
127-
}
128-
}
123+
foundElement := slices.Contains(setBooleanKeys[:], key)
129124
if !foundElement {
130125
err = fmt.Errorf("invalid boolean key name: %s", key)
131126
}
@@ -153,13 +148,7 @@ func (v *Verifier) SetDuration(key DurationKey, duration time.Duration) APIVerif
153148
func validateDurationKeys(v Verifier) error {
154149
var err error
155150
for key := range v.Inputs.Flags.DurationFlags {
156-
foundElement := false
157-
for _, sliceElement := range setDurationKeys {
158-
if sliceElement == key {
159-
foundElement = true
160-
break
161-
}
162-
}
151+
foundElement := slices.Contains(setDurationKeys[:], key)
163152
if !foundElement {
164153
err = fmt.Errorf("invalid duration key name: %s", key)
165154
}
@@ -178,13 +167,7 @@ func (v *Verifier) SetString(key StringKey, value []string) APIVerifier {
178167
func validateStringKeys(v Verifier) error {
179168
var err error
180169
for key := range v.Inputs.Flags.StringFlags {
181-
foundElement := false
182-
for _, sliceElement := range setStringKeys {
183-
if sliceElement == key {
184-
foundElement = true
185-
break
186-
}
187-
}
170+
foundElement := slices.Contains(setStringKeys[:], key)
188171
if !foundElement {
189172
err = fmt.Errorf("invalid string key name: %s", key)
190173
}
@@ -209,13 +192,7 @@ func (v *Verifier) SetValues(valuesFlagName ValuesKey, values map[string]interfa
209192
func validateValuesKeys(v Verifier) error {
210193
var err error
211194
for key := range v.Inputs.Flags.ValuesFlags {
212-
foundElement := false
213-
for _, sliceElement := range setValuesKeys {
214-
if sliceElement == key {
215-
foundElement = true
216-
break
217-
}
218-
}
195+
foundElement := slices.Contains(setValuesKeys[:], key)
219196
if !foundElement {
220197
err = fmt.Errorf("invalid values key name: %s", key)
221198
}
@@ -261,13 +238,7 @@ func (v *Verifier) UnEnableChecks(checkNames []checks.CheckName) APIVerifier {
261238
func validateChecks(v Verifier) error {
262239
var err error
263240
for checkName := range v.Inputs.Flags.Checks {
264-
isValidCheckName := false
265-
for _, validCheckName := range checks.GetChecks() {
266-
if checkName == validCheckName {
267-
isValidCheckName = true
268-
break
269-
}
270-
}
241+
isValidCheckName := slices.Contains(checks.GetChecks(), checkName)
271242
if !isValidCheckName {
272243
err = fmt.Errorf("invalid check name : %s", checkName)
273244
return err

0 commit comments

Comments
 (0)