Skip to content

Commit

Permalink
Do not call watchConfig() when not in watch mode
Browse files Browse the repository at this point in the history
See gohugoio#1772

Also, force DisableLiveReload to true when running "hugo --watch"
(build-only non-server mode) to prevent livereload.ForceRefresh(),
which would end up blocking watchConfig() forever, from being called
because livereload.Initialize() is never called in this case.

This fixes the bug where "hugo --watch" could only reload config.toml
once before it gets stuck for good at livereload.ForceRefresh().

This is also consistent with Hugo's existing behaviour:
Non-server "hugo --watch" has never injected livereload.js
since the inception of the "watch" feature in Hugo v0.12.
  • Loading branch information
anthonyfok authored and tychoish committed Aug 13, 2017
1 parent fddad72 commit 95a9f6c
Showing 1 changed file with 9 additions and 6 deletions.
15 changes: 9 additions & 6 deletions commands/hugo.go
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,8 @@ func isUserError(err error) bool {
return userErrorRegexp.MatchString(err.Error())
}

//HugoCmd is Hugo's root command. Every other command attached to HugoCmd is a child command to it.
// HugoCmd is Hugo's root command.
// Every other command attached to HugoCmd is a child command to it.
var HugoCmd = &cobra.Command{
Use: "hugo",
Short: "hugo builds your site",
Expand All @@ -105,10 +106,12 @@ Complete documentation is available at http://gohugo.io/.`,
return err
}

watchConfig()
if BuildWatch {
viper.Set("DisableLiveReload", true)
watchConfig()
}

return build()

},
}

Expand Down Expand Up @@ -412,7 +415,7 @@ func watchConfig() {
fmt.Println("Config file changed:", e.Name)
utils.CheckErr(buildSite(true))
if !viper.GetBool("DisableLiveReload") {
// Will block forever trying to write to a channel that nobody is reading if livereload isn't initalized
// Will block forever trying to write to a channel that nobody is reading if livereload isn't initialized
livereload.ForceRefresh()
}
})
Expand Down Expand Up @@ -777,7 +780,7 @@ func NewWatcher(port int) error {
}

if !BuildWatch && !viper.GetBool("DisableLiveReload") {
// Will block forever trying to write to a channel that nobody is reading if livereload isn't initalized
// Will block forever trying to write to a channel that nobody is reading if livereload isn't initialized

// force refresh when more than one file
if len(staticEvents) > 0 {
Expand All @@ -800,7 +803,7 @@ func NewWatcher(port int) error {
rebuildSite(dynamicEvents)

if !BuildWatch && !viper.GetBool("DisableLiveReload") {
// Will block forever trying to write to a channel that nobody is reading if livereload isn't initalized
// Will block forever trying to write to a channel that nobody is reading if livereload isn't initialized
livereload.ForceRefresh()
}
}
Expand Down

0 comments on commit 95a9f6c

Please sign in to comment.