Documentation ¶
Overview ¶
Package hugofs provides the file systems used by Hugo.
Index ¶
- Variables
- func NewLanguageCompositeFs(base afero.Fs, overlay *LanguageFs) afero.Fs
- type BaseFs
- type FilePather
- type Fs
- type LanguageAnnouncer
- type LanguageFileInfo
- func (fi *LanguageFileInfo) BaseDir() string
- func (fi *LanguageFileInfo) Filename() string
- func (fi *LanguageFileInfo) Lang() string
- func (fi *LanguageFileInfo) Name() string
- func (fi *LanguageFileInfo) Path() string
- func (fi *LanguageFileInfo) RealName() string
- func (fi *LanguageFileInfo) TranslationBaseName() string
- type LanguageFs
Constants ¶
This section is empty.
Variables ¶
var LanguageDirsMerger = func(lofi, bofi []os.FileInfo) ([]os.FileInfo, error) { m := make(map[string]*LanguageFileInfo) for _, fi := range lofi { fil, ok := fi.(*LanguageFileInfo) if !ok { return nil, fmt.Errorf("received %T, expected *LanguageFileInfo", fi) } m[fil.virtualName] = fil } for _, fi := range bofi { fil, ok := fi.(*LanguageFileInfo) if !ok { return nil, fmt.Errorf("received %T, expected *LanguageFileInfo", fi) } existing, found := m[fil.virtualName] if !found || existing.weight < fil.weight { m[fil.virtualName] = fil } } merged := make([]os.FileInfo, len(m)) i := 0 for _, v := range m { merged[i] = v i++ } return merged, nil }
var Os = &afero.OsFs{}
Os points to an Os Afero file system.
Functions ¶
func NewLanguageCompositeFs ¶ added in v0.38.1
func NewLanguageCompositeFs(base afero.Fs, overlay *LanguageFs) afero.Fs
NewLanguageCompositeFs creates a composite and language aware filesystem. This is a hybrid filesystem. To get a specific file in Open, Stat etc., use the full filename to the target filesystem. This information is available in Readdir, Stat etc. via the special LanguageFileInfo FileInfo implementation.
Types ¶
type BaseFs ¶ added in v0.38.1
type BaseFs struct { // The filesystem used to capture content. This can be a composite and // language aware file system. ContentFs afero.Fs // The filesystem used to store resources (processed images etc.). // This usually maps to /my-project/resources. ResourcesFs afero.Fs // The filesystem used to publish the rendered site. // This usually maps to /my-project/public. PublishFs afero.Fs }
BaseFs contains the core base filesystems used by Hugo. The name "base" is used to underline that even if they can be composites, they all have a base path set to a specific resource folder, e.g "/my-project/content". So, no absolute filenames needed.
type FilePather ¶ added in v0.38.1
type FilePather interface { // Filename gets the full path and filename to the file. Filename() string // Path gets the content relative path including file name and extension. // The directory is relative to the content root where "content" is a broad term. Path() string // RealName is FileInfo.Name in its original form. RealName() string BaseDir() string }
FilePather is aware of its file's location.
type Fs ¶ added in v0.20.1
type Fs struct { // Source is Hugo's source file system. Source afero.Fs // Destination is Hugo's destination file system. Destination afero.Fs // Os is an OS file system. // NOTE: Field is currently unused. Os afero.Fs // WorkingDir is a read-only file system // restricted to the project working dir. WorkingDir *afero.BasePathFs }
Fs abstracts the file system to separate source and destination file systems and allows both to be mocked for testing.
func NewDefault ¶ added in v0.20.1
NewDefault creates a new Fs with the OS file system as source and destination file systems.
type LanguageAnnouncer ¶ added in v0.38.1
LanguageAnnouncer is aware of its language.
type LanguageFileInfo ¶ added in v0.38.1
func (*LanguageFileInfo) BaseDir ¶ added in v0.38.1
func (fi *LanguageFileInfo) BaseDir() string
func (*LanguageFileInfo) Filename ¶ added in v0.38.1
func (fi *LanguageFileInfo) Filename() string
func (*LanguageFileInfo) Lang ¶ added in v0.38.1
func (fi *LanguageFileInfo) Lang() string
func (*LanguageFileInfo) Name ¶ added in v0.38.1
func (fi *LanguageFileInfo) Name() string
Name is the name of the file within this filesystem without any path info. It will be marked with language information so we can identify it as ours.
func (*LanguageFileInfo) Path ¶ added in v0.38.1
func (fi *LanguageFileInfo) Path() string
func (*LanguageFileInfo) RealName ¶ added in v0.38.1
func (fi *LanguageFileInfo) RealName() string
func (*LanguageFileInfo) TranslationBaseName ¶ added in v0.38.1
func (fi *LanguageFileInfo) TranslationBaseName() string
TranslationBaseName returns the base filename without any extension or language identificator.
type LanguageFs ¶ added in v0.38.1
func NewLanguageFs ¶ added in v0.38.1
func (*LanguageFs) Lang ¶ added in v0.38.1
func (fs *LanguageFs) Lang() string