commands: Make sure all language homes are always re-rendered in fast render mode

Fixes #4125
This commit is contained in:
Bjørn Erik Pedersen 2017-12-29 09:37:37 +01:00
parent 1c114d539b
commit 72903be587
No known key found for this signature in database
GPG key ID: 330E6E2BD4859D8F
3 changed files with 44 additions and 10 deletions

View file

@ -940,9 +940,17 @@ func (c *commandeer) rebuildSites(events []fsnotify.Event) error {
visited := c.visitedURLs.PeekAllSet()
doLiveReload := !buildWatch && !c.Cfg.GetBool("disableLiveReload")
if doLiveReload && !c.Cfg.GetBool("disableFastRender") {
home := c.pathSpec.PrependBasePath("/")
// Make sure we always render the home page
visited[home] = true
// Make sure we always render the home pages
for _, l := range c.languages {
langPath := c.PathSpec().GetLangSubDir(l.Lang)
if langPath != "" {
langPath = langPath + "/"
}
home := c.pathSpec.PrependBasePath("/" + langPath)
visited[home] = true
}
}
return Hugo.Build(hugolib.BuildCfg{RecentlyVisited: visited}, events...)
}

View file

@ -31,8 +31,8 @@ type PathSpec struct {
uglyURLs bool
canonifyURLs bool
language *Language
//StatsCounter *siteSta
language *Language
languages Languages
// pagination path handling
paginatePath string
@ -85,9 +85,20 @@ func NewPathSpec(fs *hugofs.Fs, cfg config.Provider) (*PathSpec, error) {
staticDirs = append(staticDirs, getStringOrStringSlice(cfg, "staticDir", i)...)
}
var lang string
var (
lang string
language *Language
languages Languages
)
if l, ok := cfg.(*Language); ok {
language = l
lang = l.Lang
}
if l, ok := cfg.Get("languagesSorted").(Languages); ok {
languages = l
}
ps := &PathSpec{
@ -98,6 +109,8 @@ func NewPathSpec(fs *hugofs.Fs, cfg config.Provider) (*PathSpec, error) {
uglyURLs: cfg.GetBool("uglyURLs"),
canonifyURLs: cfg.GetBool("canonifyURLs"),
multilingual: cfg.GetBool("multilingual"),
language: language,
languages: languages,
defaultContentLanguageInSubdir: cfg.GetBool("defaultContentLanguageInSubdir"),
defaultContentLanguage: cfg.GetString("defaultContentLanguage"),
paginatePath: cfg.GetString("paginatePath"),
@ -119,10 +132,6 @@ func NewPathSpec(fs *hugofs.Fs, cfg config.Provider) (*PathSpec, error) {
ps.PublishDir = publishDir
if language, ok := cfg.(*Language); ok {
ps.language = language
}
return ps, nil
}

View file

@ -215,6 +215,23 @@ func (p *PathSpec) getLanguagePrefix() string {
return currentLang
}
// GetLangSubDir returns the given language's subdir if needed.
func (p *PathSpec) GetLangSubDir(lang string) string {
if !p.multilingual {
return ""
}
if p.languages.IsMultihost() {
return ""
}
if lang == "" || (lang == p.defaultContentLanguage && !p.defaultContentLanguageInSubdir) {
return ""
}
return lang
}
// IsAbsURL determines whether the given path points to an absolute URL.
func IsAbsURL(path string) bool {
url, err := url.Parse(path)