Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 2fb2e2d

Browse files
committed
feat: Add SkipDenied option to reader listing functions
1 parent a230828 commit 2fb2e2d

4 files changed

Lines changed: 8 additions & 2 deletions

File tree

filesystem/reader/globFiles.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ func GlobFiles(root, namePattern string) ([]File, error) {
2727
}
2828
walked, err := WalkFiles(root, ListOption{
2929
SkipExcluded: true,
30+
SkipDenied: true,
3031
IgnoreWalkError: true,
3132
IncludeNonRegular: true,
3233
})

filesystem/reader/reader.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77

88
type ListOption struct {
99
SkipExcluded bool
10+
SkipDenied bool
1011
IgnoreWalkError bool
1112
IncludeNonRegular bool
1213
}

filesystem/reader/searchFiles.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import (
44
"bufio"
55
"bytes"
66
"fmt"
7-
"log/slog"
87
"os"
98
"path/filepath"
109
"regexp"
@@ -47,7 +46,6 @@ func SearchFiles(root, namePattern string, filePatterns []string, maxSize int64,
4746
err = filepath.WalkDir(root, func(path string, d os.DirEntry, err error) error {
4847
if err != nil {
4948
if opt.IgnoreWalkError {
50-
slog.Warn("filepath.WalkDir", slog.String("error", err.Error()))
5149
return nil
5250
}
5351
return err
@@ -66,6 +64,9 @@ func SearchFiles(root, namePattern string, filePatterns []string, maxSize int64,
6664
}
6765

6866
if d.IsDir() {
67+
if opt.SkipDenied && filesystem.IsDenied(path) {
68+
return filepath.SkipDir
69+
}
6970
if opt.SkipExcluded {
7071
abs, err := filepath.Abs(path)
7172
if err != nil {

filesystem/reader/walkFiles.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,9 @@ func WalkFiles(root string, opts ...ListOption) ([]File, error) {
3535
if strings.HasPrefix(entry.Name(), ".") {
3636
return filepath.SkipDir
3737
}
38+
if opt.SkipDenied && filesystem.IsDenied(path) {
39+
return filepath.SkipDir
40+
}
3841
if opt.SkipExcluded {
3942
abs, err := filepath.Abs(path)
4043
if err != nil {

0 commit comments

Comments
 (0)