diff options
Diffstat (limited to 'hugolib/fileInfo.go')
-rw-r--r-- | hugolib/fileInfo.go | 76 |
1 files changed, 29 insertions, 47 deletions
diff --git a/hugolib/fileInfo.go b/hugolib/fileInfo.go index ea3b15ef3..4997142a1 100644 --- a/hugolib/fileInfo.go +++ b/hugolib/fileInfo.go @@ -16,82 +16,64 @@ package hugolib import ( "strings" - "github.com/gohugoio/hugo/helpers" + "github.com/gohugoio/hugo/hugofs/files" + + "github.com/pkg/errors" + + "github.com/gohugoio/hugo/hugofs" + + "github.com/spf13/afero" + "github.com/gohugoio/hugo/source" ) // fileInfo implements the File and ReadableFile interface. var ( - _ source.File = (*fileInfo)(nil) - _ source.ReadableFile = (*fileInfo)(nil) - _ pathLangFile = (*fileInfo)(nil) + _ source.File = (*fileInfo)(nil) ) -// A partial interface to prevent ambigous compiler error. -type basePather interface { - Filename() string - RealName() string - BaseDir() string -} - type fileInfo struct { - bundleTp bundleDirType - - source.ReadableFile - basePather + source.File overriddenLang string +} - // Set if the content language for this file is disabled. - disabled bool +func (fi *fileInfo) Open() (afero.File, error) { + f, err := fi.FileInfo().Meta().Open() + if err != nil { + err = errors.Wrap(err, "fileInfo") + } + + return f, err } func (fi *fileInfo) Lang() string { if fi.overriddenLang != "" { return fi.overriddenLang } - return fi.ReadableFile.Lang() -} - -func (fi *fileInfo) Filename() string { - if fi == nil || fi.basePather == nil { - return "" - } - return fi.basePather.Filename() + return fi.File.Lang() } func (fi *fileInfo) String() string { - if fi == nil || fi.ReadableFile == nil { + if fi == nil || fi.File == nil { return "" } return fi.Path() } -func (fi *fileInfo) isOwner() bool { - return fi.bundleTp > bundleNot -} - -func IsContentFile(filename string) bool { - return contentFileExtensionsSet[strings.TrimPrefix(helpers.Ext(filename), ".")] -} - -func (fi *fileInfo) isContentFile() bool { - return contentFileExtensionsSet[fi.Ext()] -} +// TODO(bep) rename +func newFileInfo(sp *source.SourceSpec, fi hugofs.FileMetaInfo) (*fileInfo, error) { -func newFileInfo(sp *source.SourceSpec, baseDir, filename string, fi pathLangFileFi, tp bundleDirType) *fileInfo { + baseFi, err := sp.NewFileInfo(fi) + if err != nil { + return nil, err + } - baseFi := sp.NewFileInfo(baseDir, filename, tp == bundleLeaf, fi) f := &fileInfo{ - bundleTp: tp, - ReadableFile: baseFi, - basePather: fi, + File: baseFi, } - lang := f.Lang() - f.disabled = lang != "" && sp.DisabledLanguages[lang] - - return f + return f, nil } @@ -108,7 +90,7 @@ const ( // Returns the given file's name's bundle type and whether it is a content // file or not. func classifyBundledFile(name string) (bundleDirType, bool) { - if !IsContentFile(name) { + if !files.IsContentFile(name) { return bundleNot, false } if strings.HasPrefix(name, "_index.") { |