Skip to content

Commit 3c114d1

Browse files
committed
feat: add support for well known files
Related to #135
1 parent e080156 commit 3c114d1

File tree

4 files changed

+40
-0
lines changed

4 files changed

+40
-0
lines changed

pkg/filetype/file_type.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import (
1212
type FileType struct {
1313
Name string
1414
Extensions map[string]struct{}
15+
KnownFiles map[string]struct{}
1516
Validator validator.Validator
1617
}
1718

@@ -52,6 +53,7 @@ var TomlFileType = FileType{
5253
var IniFileType = FileType{
5354
Name: "ini",
5455
Extensions: misc.ArrToMap("ini"),
56+
KnownFiles: misc.ArrToMap(".editorconfig", ".gitconfig", ".gitmodules", ".shellcheckrc", ".npmrc", "inputrc", ".inputrc", ".wgetrc", ".curlrc", ".nanorc"),
5557
Validator: validator.IniValidator{},
5658
}
5759

pkg/finder/finder_test.go

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,30 @@ func Test_fsFinderCustomTypes(t *testing.T) {
133133
}
134134
}
135135

136+
func Test_fsFinderKnownFiles(t *testing.T) {
137+
jsonFileType := filetype.FileType{
138+
Name: "json",
139+
Extensions: misc.ArrToMap("whatever"),
140+
KnownFiles: misc.ArrToMap(".editorconfig"),
141+
Validator: validator.JsonValidator{},
142+
}
143+
fsFinder := FileSystemFinderInit(
144+
WithPathRoots("../../test/fixtures"),
145+
WithExcludeDirs([]string{"subdir"}),
146+
WithFileTypes([]filetype.FileType{jsonFileType}),
147+
)
148+
149+
files, err := fsFinder.Find()
150+
151+
if len(files) < 1 {
152+
t.Errorf("Unable to find files")
153+
}
154+
155+
if err != nil {
156+
t.Errorf("Unable to find files")
157+
}
158+
}
159+
136160
func Test_fsFinderPathNoExist(t *testing.T) {
137161
fsFinder := FileSystemFinderInit(
138162
WithPathRoots("/bad/path"),

pkg/finder/fsfinder.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,13 +128,21 @@ func (fsf FileSystemFinder) findOne(pathRoot string) ([]FileMetadata, error) {
128128
// filepath.Ext() returns the extension name with a dot so it
129129
// needs to be removed.
130130

131+
walkFileName := filepath.Base(path)
131132
walkFileExtension := strings.TrimPrefix(filepath.Ext(path), ".")
132133

133134
if _, ok := fsf.ExcludeFileTypes[walkFileExtension]; ok {
134135
return nil
135136
}
136137
extensionLowerCase := strings.ToLower(walkFileExtension)
137138
for _, fileType := range fsf.FileTypes {
139+
140+
if _, ok := fileType.KnownFiles[walkFileName]; ok {
141+
fileMetadata := FileMetadata{dirEntry.Name(), path, fileType}
142+
matchingFiles = append(matchingFiles, fileMetadata)
143+
break
144+
}
145+
138146
if _, ok := fileType.Extensions[extensionLowerCase]; ok {
139147
fileMetadata := FileMetadata{dirEntry.Name(), path, fileType}
140148
matchingFiles = append(matchingFiles, fileMetadata)

test/fixtures/.editorconfig

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
# https://editorconfig.org
2+
root = true
3+
4+
[*]
5+
charset = utf-8
6+
end_of_line = lf

0 commit comments

Comments
 (0)