ref: 72903be587e9c4e3644f60b11e26238ec03da2db
parent: 1c114d539b0755724443fe28c90b12fe2a19085a
author: Bjørn Erik Pedersen <[email protected]>
date: Fri Dec 29 04:37:37 EST 2017
commands: Make sure all language homes are always re-rendered in fast render mode Fixes #4125
--- a/commands/hugo.go
+++ b/commands/hugo.go
@@ -940,9 +940,17 @@
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...)
}
--- a/helpers/pathspec.go
+++ b/helpers/pathspec.go
@@ -31,8 +31,8 @@
uglyURLs bool
canonifyURLs bool
- language *Language
- //StatsCounter *siteSta
+ language *Language
+ languages Languages
// pagination path handling
paginatePath string
@@ -85,11 +85,22 @@
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{
Fs: fs,
Cfg: cfg,
@@ -98,6 +109,8 @@
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"),
@@ -118,10 +131,6 @@
}
ps.PublishDir = publishDir
-
- if language, ok := cfg.(*Language); ok {
- ps.language = language
- }
return ps, nil
}
--- a/helpers/url.go
+++ b/helpers/url.go
@@ -215,6 +215,23 @@
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)