|
@@ -80,35 +80,50 @@ func walk(path string, info os.FileInfo, resolvedPath string, symlinkPathsFollow
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
return walkFn(resolvedPath, info, err)
|
|
return walkFn(resolvedPath, info, err)
|
|
|
}
|
|
}
|
|
|
|
|
+ var subFiles = make([]subFile, 0)
|
|
|
for _, fileInfo := range list {
|
|
for _, fileInfo := range list {
|
|
|
path2 := filepath.Join(path, fileInfo.Name())
|
|
path2 := filepath.Join(path, fileInfo.Name())
|
|
|
var resolvedPath2 string
|
|
var resolvedPath2 string
|
|
|
if resolvedPath != "" {
|
|
if resolvedPath != "" {
|
|
|
resolvedPath2 = filepath.Join(resolvedPath, fileInfo.Name())
|
|
resolvedPath2 = filepath.Join(resolvedPath, fileInfo.Name())
|
|
|
}
|
|
}
|
|
|
- err = walk(path2, fileInfo, resolvedPath2, symlinkPathsFollowed, walkFn)
|
|
|
|
|
|
|
+ subFiles = append(subFiles, subFile{path: path2, resolvedPath: resolvedPath2, fileInfo: fileInfo})
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if containsDistFolder(subFiles) {
|
|
|
|
|
+ err := walk(
|
|
|
|
|
+ filepath.Join(path, "dist"),
|
|
|
|
|
+ info,
|
|
|
|
|
+ filepath.Join(resolvedPath, "dist"),
|
|
|
|
|
+ symlinkPathsFollowed,
|
|
|
|
|
+ walkFn)
|
|
|
|
|
+
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
return err
|
|
return err
|
|
|
}
|
|
}
|
|
|
|
|
+ } else {
|
|
|
|
|
+ for _, p := range subFiles {
|
|
|
|
|
+ err = walk(p.path, p.fileInfo, p.resolvedPath, symlinkPathsFollowed, walkFn)
|
|
|
|
|
+
|
|
|
|
|
+ if err != nil {
|
|
|
|
|
+ return err
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
return nil
|
|
return nil
|
|
|
}
|
|
}
|
|
|
return nil
|
|
return nil
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-func ContainsDistFolder(path string) bool {
|
|
|
|
|
- info, err := os.Lstat(path)
|
|
|
|
|
- if err != nil {
|
|
|
|
|
- return false
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- if !info.IsDir() {
|
|
|
|
|
- return false
|
|
|
|
|
- }
|
|
|
|
|
|
|
+type subFile struct {
|
|
|
|
|
+ path, resolvedPath string
|
|
|
|
|
+ fileInfo os.FileInfo
|
|
|
|
|
+}
|
|
|
|
|
|
|
|
- list, err := ioutil.ReadDir(path)
|
|
|
|
|
- for _, fileInfo := range list {
|
|
|
|
|
- if fileInfo.IsDir() && fileInfo.Name() == "dist" {
|
|
|
|
|
|
|
+func containsDistFolder(subFiles []subFile) bool {
|
|
|
|
|
+ for _, p := range subFiles {
|
|
|
|
|
+ if p.fileInfo.IsDir() && p.fileInfo.Name() == "dist" {
|
|
|
return true
|
|
return true
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|