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() visited := c.visitedURLs.PeekAllSet()
doLiveReload := !buildWatch && !c.Cfg.GetBool("disableLiveReload") doLiveReload := !buildWatch && !c.Cfg.GetBool("disableLiveReload")
if doLiveReload && !c.Cfg.GetBool("disableFastRender") { if doLiveReload && !c.Cfg.GetBool("disableFastRender") {
home := c.pathSpec.PrependBasePath("/")
// Make sure we always render the home page // Make sure we always render the home pages
visited[home] = true 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...) return Hugo.Build(hugolib.BuildCfg{RecentlyVisited: visited}, events...)
} }

View file

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

View file

@ -215,6 +215,23 @@ func (p *PathSpec) getLanguagePrefix() string {
return currentLang 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. // IsAbsURL determines whether the given path points to an absolute URL.
func IsAbsURL(path string) bool { func IsAbsURL(path string) bool {
url, err := url.Parse(path) url, err := url.Parse(path)