diff options
author | Anthony Fok <foka@debian.org> | 2016-01-13 09:34:29 +0300 |
---|---|---|
committer | Steve Francia <steve.francia@gmail.com> | 2016-01-30 00:21:55 +0300 |
commit | e8eb61816631c0f99b15844f40ad175728c9e8c9 (patch) | |
tree | 34bbe1fb476f0505d19f5bcbf4880ad05401f435 | |
parent | c438f45629a42fe1a38ea1ff665c6016bb5e8aa1 (diff) |
Do not call watchConfig() when not in watch mode
See #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.
-rw-r--r-- | commands/hugo.go | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/commands/hugo.go b/commands/hugo.go index 84fe42f76..5ee3f7385 100644 --- a/commands/hugo.go +++ b/commands/hugo.go @@ -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", @@ -105,10 +106,12 @@ Complete documentation is available at http://gohugo.io/.`, return err } - watchConfig() + if BuildWatch { + viper.Set("DisableLiveReload", true) + watchConfig() + } return build() - }, } @@ -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() } }) @@ -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 { @@ -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() } } |