summaryrefslogtreecommitdiffstats
path: root/helpers/pathspec.go
diff options
context:
space:
mode:
Diffstat (limited to 'helpers/pathspec.go')
-rw-r--r--helpers/pathspec.go36
1 files changed, 36 insertions, 0 deletions
diff --git a/helpers/pathspec.go b/helpers/pathspec.go
index 164d242a0..d5a2c92e8 100644
--- a/helpers/pathspec.go
+++ b/helpers/pathspec.go
@@ -15,6 +15,7 @@ package helpers
import (
"fmt"
+ "strings"
"github.com/gohugoio/hugo/config"
"github.com/gohugoio/hugo/hugofs"
@@ -31,6 +32,7 @@ type PathSpec struct {
canonifyURLs bool
language *Language
+ //StatsCounter *siteSta
// pagination path handling
paginatePath string
@@ -38,10 +40,12 @@ type PathSpec struct {
theme string
// Directories
+ contentDir string
themesDir string
layoutDir string
workingDir string
staticDirs []string
+ PublishDir string
// The PathSpec looks up its config settings in both the current language
// and then in the global Viper config.
@@ -52,6 +56,8 @@ type PathSpec struct {
defaultContentLanguage string
multilingual bool
+ ProcessingStats *ProcessingStats
+
// The file systems to use
Fs *hugofs.Fs
@@ -79,6 +85,11 @@ func NewPathSpec(fs *hugofs.Fs, cfg config.Provider) (*PathSpec, error) {
staticDirs = append(staticDirs, getStringOrStringSlice(cfg, "staticDir", i)...)
}
+ var lang string
+ if l, ok := cfg.(*Language); ok {
+ lang = l.Lang
+ }
+
ps := &PathSpec{
Fs: fs,
Cfg: cfg,
@@ -91,13 +102,23 @@ func NewPathSpec(fs *hugofs.Fs, cfg config.Provider) (*PathSpec, error) {
defaultContentLanguage: cfg.GetString("defaultContentLanguage"),
paginatePath: cfg.GetString("paginatePath"),
BaseURL: baseURL,
+ contentDir: cfg.GetString("contentDir"),
themesDir: cfg.GetString("themesDir"),
layoutDir: cfg.GetString("layoutDir"),
workingDir: cfg.GetString("workingDir"),
staticDirs: staticDirs,
theme: cfg.GetString("theme"),
+ ProcessingStats: NewProcessingStats(lang),
}
+ publishDir := ps.AbsPathify(cfg.GetString("publishDir")) + FilePathSeparator
+ // If root, remove the second '/'
+ if publishDir == "//" {
+ publishDir = FilePathSeparator
+ }
+
+ ps.PublishDir = publishDir
+
if language, ok := cfg.(*Language); ok {
ps.language = language
}
@@ -129,6 +150,11 @@ func (p *PathSpec) PaginatePath() string {
return p.paginatePath
}
+// ContentDir returns the configured workingDir.
+func (p *PathSpec) ContentDir() string {
+ return p.contentDir
+}
+
// WorkingDir returns the configured workingDir.
func (p *PathSpec) WorkingDir() string {
return p.workingDir
@@ -153,3 +179,13 @@ func (p *PathSpec) Theme() string {
func (p *PathSpec) ThemesDir() string {
return p.themesDir
}
+
+// PermalinkForBaseURL creates a permalink from the given link and baseURL.
+func (p *PathSpec) PermalinkForBaseURL(link, baseURL string) string {
+ link = strings.TrimPrefix(link, "/")
+ if !strings.HasSuffix(baseURL, "/") {
+ baseURL += "/"
+ }
+ return baseURL + link
+
+}