MCPcopy
hub / github.com/wal-g/wal-g / ListFolderRecursivelyWithPrefix

Function ListFolderRecursivelyWithPrefix

pkg/storages/storage/folder.go:102–126  ·  view source on GitHub ↗
(folder Folder, prefix string)

Source from the content-addressed store, hash-verified

100}
101
102func ListFolderRecursivelyWithPrefix(folder Folder, prefix string) (relativePathObjects []Object, err error) {
103 checkFile := len(prefix) > 0 && !strings.HasSuffix(prefix, "/")
104 prefix = strings.Trim(prefix, "/")
105
106 if checkFile {
107 dirName, fileName := path.Split(prefix)
108 parentFolder := folder.GetSubFolder(dirName)
109 objects, _, err := parentFolder.ListFolder()
110 if err != nil {
111 return nil, fmt.Errorf("can't list folder %q: %w", dirName, err)
112 }
113 for _, obj := range objects {
114 if obj.GetName() == fileName {
115 return prependPaths([]Object{obj}, dirName), nil
116 }
117 }
118 }
119
120 parentFolder := folder.GetSubFolder(prefix)
121 objects, err := ListFolderRecursively(parentFolder)
122 if err != nil {
123 return nil, fmt.Errorf("can't list folder %q: %w", prefix, err)
124 }
125 return prependPaths(objects, prefix), nil
126}
127
128func Glob(folder Folder, pattern string) (objectPaths []string, folderPaths []string, err error) {
129 objectPaths = make([]string, 0)

Callers 3

HandleRemoveFunction · 0.92
listMissingFilesFunction · 0.92

Calls 6

ErrorfMethod · 0.80
prependPathsFunction · 0.70
ListFolderRecursivelyFunction · 0.70
GetSubFolderMethod · 0.65
ListFolderMethod · 0.65
GetNameMethod · 0.65

Tested by 1