Skip to content

Commit

Permalink
commands: Make sure all language homes are always re-rendered in fast…
Browse files Browse the repository at this point in the history
… render mode

Fixes #4125
  • Loading branch information
bep committed Dec 29, 2017
1 parent 1c114d5 commit 72903be
Show file tree
Hide file tree
Showing 3 changed files with 44 additions and 10 deletions.
14 changes: 11 additions & 3 deletions commands/hugo.go
Original file line number Diff line number Diff line change
Expand Up @@ -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...)
}
Expand Down
23 changes: 16 additions & 7 deletions helpers/pathspec.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,8 @@ type PathSpec struct {
uglyURLs bool
canonifyURLs bool

language *Language
//StatsCounter *siteSta
language *Language
languages Languages

// pagination path handling
paginatePath string
Expand Down Expand Up @@ -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{
Expand All @@ -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"),
Expand All @@ -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
}

Expand Down
17 changes: 17 additions & 0 deletions helpers/url.go
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down

0 comments on commit 72903be

Please sign in to comment.