diff --git a/pkg/config/reader.go b/pkg/config/reader.go index 66583ada..00722ba6 100644 --- a/pkg/config/reader.go +++ b/pkg/config/reader.go @@ -12,6 +12,7 @@ import ( "github.com/golangci/golangci-lint/pkg/fsutils" "github.com/golangci/golangci-lint/pkg/logutils" + "github.com/golangci/golangci-lint/pkg/sliceutil" ) type FileReader struct { @@ -183,7 +184,7 @@ func (r *FileReader) setupConfigFileSearch() { // find home directory for global config if home, err := homedir.Dir(); err != nil { r.log.Warnf("Can't get user's home directory: %s", err.Error()) - } else if !sliceContains(configSearchPaths, home) { + } else if !sliceutil.Contains(configSearchPaths, home) { configSearchPaths = append(configSearchPaths, home) } @@ -194,15 +195,6 @@ func (r *FileReader) setupConfigFileSearch() { } } -func sliceContains(slice []string, value string) bool { - for _, v := range slice { - if v == value { - return true - } - } - return false -} - var errConfigDisabled = errors.New("config is disabled by --no-config") func (r *FileReader) parseConfigOption() (string, error) { diff --git a/pkg/sliceutil/sliceutil.go b/pkg/sliceutil/sliceutil.go new file mode 100644 index 00000000..cb89e34e --- /dev/null +++ b/pkg/sliceutil/sliceutil.go @@ -0,0 +1,17 @@ +package sliceutil + +// IndexOf get the index of the given value in the given string slice, +// or -1 if not found. +func IndexOf(slice []string, value string) int { + for i, v := range slice { + if v == value { + return i + } + } + return -1 +} + +// Contains check if a string slice contains a value. +func Contains(slice []string, value string) bool { + return IndexOf(slice, value) != -1 +} diff --git a/pkg/sliceutil/sliceutil_test.go b/pkg/sliceutil/sliceutil_test.go new file mode 100644 index 00000000..647125bf --- /dev/null +++ b/pkg/sliceutil/sliceutil_test.go @@ -0,0 +1,17 @@ +package sliceutil + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestContains(t *testing.T) { + assert.True(t, Contains([]string{"val1", "val2", "val3"}, "val2")) + assert.False(t, Contains([]string{"val1", "val2", "val3"}, "val4")) +} + +func TestIndexOf(t *testing.T) { + assert.Equal(t, 1, IndexOf([]string{"val1", "val2", "val3"}, "val2")) + assert.Equal(t, -1, IndexOf([]string{"val1", "val2", "val3"}, "val4")) +}