diff options
author | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2020-01-31 17:15:14 +0100 |
---|---|---|
committer | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2020-02-04 00:17:10 +0100 |
commit | 80dd6ddde27ce36f5432fb780e94d4974b5277c7 (patch) | |
tree | 99d0ba7eb2b343b4b65c4433a998d73af3182933 /hugofs/fileinfo.go | |
parent | 299731012441378bb9c057ceb0a3c277108aaf01 (diff) | |
download | hugo-80dd6ddde27ce36f5432fb780e94d4974b5277c7.tar.gz hugo-80dd6ddde27ce36f5432fb780e94d4974b5277c7.zip |
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.go | 34 |
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() + + }) +} |