mirror of
https://github.com/gohugoio/hugo.git
synced 2025-08-21 21:35:28 +02:00
@@ -76,6 +76,8 @@ type BaseFs struct {
|
||||
|
||||
theBigFs *filesystemsCollector
|
||||
|
||||
workingDir string
|
||||
|
||||
// Locks.
|
||||
buildMu Lockable // <project>/.hugo_build.lock
|
||||
}
|
||||
@@ -201,6 +203,27 @@ func (fs *BaseFs) ResolveJSConfigFile(name string) string {
|
||||
return ""
|
||||
}
|
||||
|
||||
// MakePathRelative creates a relative path from the given filename.
|
||||
// It returns both the component name (e.g. layouts) and the path relative to that.
|
||||
func (fs *BaseFs) MakePathRelative(filename string) (string, string) {
|
||||
for _, sfs := range fs.FileSystems() {
|
||||
if sfs.Contains(filename) {
|
||||
if s, found := sfs.MakePathRelative(filename); found {
|
||||
return sfs.Name, s
|
||||
}
|
||||
}
|
||||
}
|
||||
// May be a static file.
|
||||
if s := fs.MakeStaticPathRelative(filename); s != "" {
|
||||
return files.ComponentFolderStatic, s
|
||||
}
|
||||
// Fall back to relative to the working dir.
|
||||
if strings.HasPrefix(filename, fs.workingDir) {
|
||||
return "", strings.TrimPrefix(filename, fs.workingDir)
|
||||
}
|
||||
return "", ""
|
||||
}
|
||||
|
||||
// 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.
|
||||
@@ -235,6 +258,7 @@ type SourceFilesystems struct {
|
||||
func (s *SourceFilesystems) FileSystems() []*SourceFilesystem {
|
||||
return []*SourceFilesystem{
|
||||
s.Content,
|
||||
s.Assets,
|
||||
s.Data,
|
||||
s.I18n,
|
||||
s.Layouts,
|
||||
@@ -466,6 +490,7 @@ func NewBase(p *paths.Paths, logger loggers.Logger, options ...func(*BaseFs) err
|
||||
WorkDir: fs.WorkingDirReadOnly,
|
||||
PublishFs: publishFs,
|
||||
PublishFsStatic: publishFsStatic,
|
||||
workingDir: p.Cfg.BaseConfig().WorkingDir,
|
||||
buildMu: buildMu,
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user