-
Notifications
You must be signed in to change notification settings - Fork 11
/
Copy pathscan.go
67 lines (60 loc) · 1.41 KB
/
scan.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
package main
import (
"io/fs"
"path/filepath"
"strings"
)
func scanGitFolders(root string) ([]string, error) {
var gitFolders []string
err := filepath.WalkDir(root, func(path string, d fs.DirEntry, err error) error {
if err != nil {
return err
}
if d.IsDir() && d.Name() == ".git" {
gitFolder := filepath.Dir(path)
gitFolders = append(gitFolders, gitFolder)
return filepath.SkipDir // Skip further traversal within this directory
}
// Skip dependency directories
_, ok := excludedFolders[strings.ToLower(d.Name())]
if d.IsDir() && ok {
return filepath.SkipDir
}
return nil
})
return gitFolders, err
}
// excludedFolders is a map of folder names (case-insensitive) to be excluded during the scan.
var excludedFolders = map[string]struct{}{
"node_modules": {},
"vendor": {},
".svn": {},
".hg": {},
".bzr": {},
"_vendor": {},
"godeps": {},
"bin": {},
"obj": {},
"tmp": {},
"build": {},
".vscode": {},
"dist": {},
"__pycache__": {},
".cache": {},
"coverage": {},
"target": {},
"out": {},
".idea": {},
".gradle": {},
".terraform": {},
"env": {},
".ds_store": {},
".next": {},
".nuxt": {},
".expo": {},
".circleci": {},
".github": {},
".gitlab": {},
".vagrant": {},
".serverless": {},
}