Documentation ¶
Overview ¶
Package filesystems provides the fine grained file systems used by Hugo. These are typically virtual filesystems that are composites of project and theme content.
Index ¶
- func WithBaseFs(b *BaseFs) func(*BaseFs) error
- type BaseFs
- type Lockable
- type SourceFilesystem
- func (d *SourceFilesystem) Contains(filename string) bool
- func (d *SourceFilesystem) MakePathRelative(filename string, checkExists bool) (string, bool)
- func (d *SourceFilesystem) RealDirs(from string) []string
- func (d *SourceFilesystem) RealFilename(rel string) string
- func (d *SourceFilesystem) ReverseLookup(filename string, checkExists bool) ([]hugofs.ComponentPath, error)
- type SourceFilesystems
- func (s SourceFilesystems) IsContent(filename string) bool
- func (s SourceFilesystems) IsStatic(filename string) bool
- func (s SourceFilesystems) MakeStaticPathRelative(filename string) string
- func (s *SourceFilesystems) ResolvePaths(filename string) []hugofs.ComponentPath
- func (s SourceFilesystems) StatResource(lang, filename string) (fi os.FileInfo, fs afero.Fs, err error)
- func (s SourceFilesystems) StaticFs(lang string) afero.Fs
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func WithBaseFs ¶
WithBaseFs allows reuse of some potentially expensive to create parts that remain the same across sites/languages.
Types ¶
type BaseFs ¶
type BaseFs struct { // SourceFilesystems contains the different source file systems. *SourceFilesystems // The source filesystem (needs absolute filenames). SourceFs afero.Fs // The project source. ProjectSourceFs afero.Fs // The filesystem used to publish the rendered site. // This usually maps to /my-project/public. PublishFs afero.Fs // The filesystem used for static files. PublishFsStatic afero.Fs // A read-only filesystem starting from the project workDir. WorkDir afero.Fs // contains filtered or unexported fields }
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.
func NewBase ¶
func NewBase(p *paths.Paths, logger loggers.Logger, options ...func(*BaseFs) error) (*BaseFs, error)
NewBase builds the filesystems used by Hugo given the paths and options provided.NewBase
func (*BaseFs) AbsProjectContentDir ¶ added in v0.89.0
AbsProjectContentDir tries to construct a filename below the most relevant content directory.
func (*BaseFs) ResolveJSConfigFile ¶ added in v0.75.0
ResolveJSConfigFile resolves the JS-related config file to a absolute filename. One example of such would be postcss.config.js.
func (*BaseFs) WatchFilenames ¶ added in v0.123.0
type SourceFilesystem ¶
type SourceFilesystem struct { // Name matches one in files.ComponentFolders Name string // This is a virtual composite filesystem. It expects path relative to a context. Fs afero.Fs // The source filesystem (usually the OS filesystem). SourceFs afero.Fs // When syncing a source folder to the target (e.g. /public), this may // be set to publish into a subfolder. This is used for static syncing // in multihost mode. PublishFolder string }
A SourceFilesystem holds the filesystem for a given source type in Hugo (data, i18n, layouts, static) and additional metadata to be able to use that filesystem in server mode.
func (*SourceFilesystem) Contains ¶
func (d *SourceFilesystem) Contains(filename string) bool
Contains returns whether the given filename is a member of the current filesystem.
func (*SourceFilesystem) MakePathRelative ¶
func (d *SourceFilesystem) MakePathRelative(filename string, checkExists bool) (string, bool)
MakePathRelative creates a relative path from the given filename.
func (*SourceFilesystem) RealDirs ¶ added in v0.45.1
func (d *SourceFilesystem) RealDirs(from string) []string
RealDirs gets a list of absolute paths to directories starting from the given path.
func (*SourceFilesystem) RealFilename ¶ added in v0.45.1
func (d *SourceFilesystem) RealFilename(rel string) string
func (*SourceFilesystem) ReverseLookup ¶ added in v0.123.0
func (d *SourceFilesystem) ReverseLookup(filename string, checkExists bool) ([]hugofs.ComponentPath, error)
ReverseLookup returns the component paths for the given filename.
type SourceFilesystems ¶
type SourceFilesystems struct { Content *SourceFilesystem Data *SourceFilesystem I18n *SourceFilesystem Layouts *SourceFilesystem Archetypes *SourceFilesystem Assets *SourceFilesystem AssetsWithDuplicatesPreserved *SourceFilesystem RootFss []*hugofs.RootMappingFs // Writable filesystem on top the project's resources directory, // with any sub module's resource fs layered below. ResourcesCache afero.Fs // The work folder (may be a composite of project and theme components). Work afero.Fs // When in multihost we have one static filesystem per language. The sync // static files is currently done outside of the Hugo build (where there is // a concept of a site per language). // When in non-multihost mode there will be one entry in this map with a blank key. Static map[string]*SourceFilesystem // contains filtered or unexported fields }
SourceFilesystems contains the different source file systems. These can be composite file systems (theme and project etc.), and they have all root set to the source type the provides: data, i18n, static, layouts.
func (SourceFilesystems) IsContent ¶ added in v0.45.1
func (s SourceFilesystems) IsContent(filename string) bool
IsContent returns true if the given filename is a member of the content filesystem.
func (SourceFilesystems) IsStatic ¶
func (s SourceFilesystems) IsStatic(filename string) bool
IsStatic returns true if the given filename is a member of one of the static filesystems.
func (SourceFilesystems) MakeStaticPathRelative ¶
func (s SourceFilesystems) MakeStaticPathRelative(filename string) string
MakeStaticPathRelative makes an absolute static filename into a relative one. It will return an empty string if the filename is not a member of a static filesystem.
func (*SourceFilesystems) ResolvePaths ¶ added in v0.123.0
func (s *SourceFilesystems) ResolvePaths(filename string) []hugofs.ComponentPath
ResolvePaths resolves the given filename to a list of paths in the filesystems.
func (SourceFilesystems) StatResource ¶ added in v0.45.1
func (s SourceFilesystems) StatResource(lang, filename string) (fi os.FileInfo, fs afero.Fs, err error)
StatResource looks for a resource in these filesystems in order: static, assets and finally content. If found in any of them, it returns FileInfo and the relevant filesystem. Any non herrors.IsNotExist error will be returned. An herrors.IsNotExist error will be returned only if all filesystems return such an error. Note that if we only wanted to find the file, we could create a composite Afero fs, but we also need to know which filesystem root it lives in.