hugo

Unnamed repository; edit this file 'description' to name the repository.

git clone git://git.shimmy1996.com/hugo.git
commit e8eb61816631c0f99b15844f40ad175728c9e8c9
parent c438f45629a42fe1a38ea1ff665c6016bb5e8aa1
Author: Anthony Fok <foka@debian.org>
Date:   Tue, 12 Jan 2016 23:34:29 -0700

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.

Diffstat:
Mcommands/hugo.go | 15+++++++++------
1 file changed, 9 insertions(+), 6 deletions(-)
diff --git 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()
 					}
 				}