summaryrefslogtreecommitdiffstats
path: root/hugofs/fileinfo.go
diff options
context:
space:
mode:
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2020-01-31 17:15:14 +0100
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2020-02-04 00:17:10 +0100
commit80dd6ddde27ce36f5432fb780e94d4974b5277c7 (patch)
tree99d0ba7eb2b343b4b65c4433a998d73af3182933 /hugofs/fileinfo.go
parent299731012441378bb9c057ceb0a3c277108aaf01 (diff)
Fix module mount in sub folder
This addresses a specific issue, but is a also a major simplification of the filesystem file mounts. Fixes #6730
Diffstat (limited to 'hugofs/fileinfo.go')
-rw-r--r--hugofs/fileinfo.go34
1 files changed, 29 insertions, 5 deletions
diff --git a/hugofs/fileinfo.go b/hugofs/fileinfo.go
index c8a71bf21..0f20ec386 100644
--- a/hugofs/fileinfo.go
+++ b/hugofs/fileinfo.go
@@ -18,6 +18,7 @@ import (
"os"
"path/filepath"
"runtime"
+ "sort"
"strings"
"time"
@@ -271,13 +272,21 @@ func (fi *dirNameOnlyFileInfo) Sys() interface{} {
return nil
}
-func newDirNameOnlyFileInfo(name string, isOrdered bool, fileOpener func() (afero.File, error)) FileMetaInfo {
+func newDirNameOnlyFileInfo(name string, meta FileMeta, isOrdered bool, fileOpener func() (afero.File, error)) FileMetaInfo {
name = normalizeFilename(name)
_, base := filepath.Split(name)
- return NewFileMetaInfo(&dirNameOnlyFileInfo{name: base}, FileMeta{
- metaKeyFilename: name,
- metaKeyIsOrdered: isOrdered,
- metaKeyOpener: fileOpener})
+
+ m := copyFileMeta(meta)
+ if _, found := m[metaKeyFilename]; !found {
+ m.setIfNotZero(metaKeyFilename, name)
+ }
+ m[metaKeyOpener] = fileOpener
+ m[metaKeyIsOrdered] = isOrdered
+
+ return NewFileMetaInfo(
+ &dirNameOnlyFileInfo{name: base},
+ m,
+ )
}
func decorateFileInfo(
@@ -339,3 +348,18 @@ func fileInfosToNames(fis []os.FileInfo) []string {
}
return names
}
+
+func fromSlash(filenames []string) []string {
+ for i, name := range filenames {
+ filenames[i] = filepath.FromSlash(name)
+ }
+ return filenames
+}
+
+func sortFileInfos(fis []os.FileInfo) {
+ sort.Slice(fis, func(i, j int) bool {
+ fimi, fimj := fis[i].(FileMetaInfo), fis[j].(FileMetaInfo)
+ return fimi.Meta().Filename() < fimj.Meta().Filename()
+
+ })
+}