Name extendedGlob() anonymous functions
Moves inline function definitions out of the function. Helps with code readability. Signed-off-by: Sebastian Soto <ssoto@redhat.com>
This commit is contained in:
parent
1b5cdd50fa
commit
a3dcd82d96
|
@ -51,7 +51,20 @@ func init() {
|
||||||
// will be concatenated.
|
// will be concatenated.
|
||||||
// The matched paths are returned in lexical order, which makes the output deterministic.
|
// The matched paths are returned in lexical order, which makes the output deterministic.
|
||||||
func extendedGlob(pattern string) (matches []string, err error) {
|
func extendedGlob(pattern string) (matches []string, err error) {
|
||||||
subdirs := func(dir string) []string {
|
patterns := expandPatterns(pattern)
|
||||||
|
for _, pattern := range patterns {
|
||||||
|
theseMatches, err := filepath.Glob(pattern)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
matches = append(matches, theseMatches...)
|
||||||
|
}
|
||||||
|
sort.Strings(matches)
|
||||||
|
return matches, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// subDirs returns a recursive search of all directories under the given dir
|
||||||
|
func subDirs(dir string) []string {
|
||||||
var subdirectories []string
|
var subdirectories []string
|
||||||
if err := filepath.WalkDir(dir, func(path string, d fs.DirEntry, err error) error {
|
if err := filepath.WalkDir(dir, func(path string, d fs.DirEntry, err error) error {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -67,8 +80,10 @@ func extendedGlob(pattern string) (matches []string, err error) {
|
||||||
subdirectories = []string{"."}
|
subdirectories = []string{"."}
|
||||||
}
|
}
|
||||||
return subdirectories
|
return subdirectories
|
||||||
}
|
}
|
||||||
expandPatterns := func(pattern string) []string {
|
|
||||||
|
// expandPatterns fans out a glob pattern so that "**" is expanded to all possible subdirectory paths at that location.
|
||||||
|
func expandPatterns(pattern string) []string {
|
||||||
components := []string{}
|
components := []string{}
|
||||||
dir := pattern
|
dir := pattern
|
||||||
file := ""
|
file := ""
|
||||||
|
@ -84,7 +99,7 @@ func extendedGlob(pattern string) (matches []string, err error) {
|
||||||
var nextPatterns []string
|
var nextPatterns []string
|
||||||
if components[i] == "**" {
|
if components[i] == "**" {
|
||||||
for _, parent := range patterns {
|
for _, parent := range patterns {
|
||||||
nextSubdirs := subdirs(parent)
|
nextSubdirs := subDirs(parent)
|
||||||
for _, nextSubdir := range nextSubdirs {
|
for _, nextSubdir := range nextSubdirs {
|
||||||
nextPatterns = append(nextPatterns, filepath.Join(parent, nextSubdir))
|
nextPatterns = append(nextPatterns, filepath.Join(parent, nextSubdir))
|
||||||
}
|
}
|
||||||
|
@ -106,17 +121,6 @@ func extendedGlob(pattern string) (matches []string, err error) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return patterns
|
return patterns
|
||||||
}
|
|
||||||
patterns := expandPatterns(pattern)
|
|
||||||
for _, pattern := range patterns {
|
|
||||||
theseMatches, err := filepath.Glob(pattern)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
matches = append(matches, theseMatches...)
|
|
||||||
}
|
|
||||||
sort.Strings(matches)
|
|
||||||
return matches, nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// isArchivePath returns true if the specified path can be read like a (possibly
|
// isArchivePath returns true if the specified path can be read like a (possibly
|
||||||
|
|
Loading…
Reference in New Issue