@@ -27,7 +27,6 @@ import (
2727 "sync/atomic"
2828 "time"
2929
30- "github.com/bep/logg"
3130 "github.com/bep/simplecobra"
3231 "github.com/fsnotify/fsnotify"
3332 "github.com/gohugoio/hugo/common/herrors"
@@ -136,10 +135,6 @@ func (e *hugoBuilderErrState) wasErr() bool {
136135 return e .waserr
137136}
138137
139- func (c * hugoBuilder ) errCount () int {
140- return c .r .logger .LoggCount (logg .LevelError ) + loggers .Log ().LoggCount (logg .LevelError )
141- }
142-
143138// getDirList provides NewWatcher() with a list of directories to watch for changes.
144139func (c * hugoBuilder ) getDirList () ([]string , error ) {
145140 h , err := c .hugo ()
@@ -345,7 +340,6 @@ func (c *hugoBuilder) newWatcher(pollIntervalStr string, dirList ...string) (*wa
345340 for {
346341 select {
347342 case changes := <- c .r .changesFromBuild :
348- c .errState .setBuildErr (nil )
349343 unlock , err := h .LockBuild ()
350344 if err != nil {
351345 c .r .logger .Errorln ("Failed to acquire a build lock: %s" , err )
@@ -358,7 +352,7 @@ func (c *hugoBuilder) newWatcher(pollIntervalStr string, dirList ...string) (*wa
358352 }
359353 if c .s != nil && c .s .doLiveReload {
360354 doReload := c .changeDetector == nil || len (c .changeDetector .changed ()) > 0
361- doReload = doReload || c .showErrorInBrowser && c .errCount () > 0
355+ doReload = doReload || c .showErrorInBrowser && c .errState . buildErr () != nil
362356 if doReload {
363357 livereload .ForceRefresh ()
364358 }
@@ -372,7 +366,7 @@ func (c *hugoBuilder) newWatcher(pollIntervalStr string, dirList ...string) (*wa
372366 return
373367 }
374368 c .handleEvents (watcher , staticSyncer , evs , configSet )
375- if c .showErrorInBrowser && c .errCount () > 0 {
369+ if c .showErrorInBrowser && c .errState . buildErr () != nil {
376370 // Need to reload browser to show the error
377371 livereload .ForceRefresh ()
378372 }
@@ -419,11 +413,17 @@ func (c *hugoBuilder) build() error {
419413}
420414
421415func (c * hugoBuilder ) buildSites (noBuildLock bool ) (err error ) {
422- h , err := c .hugo ()
416+ defer func () {
417+ c .errState .setBuildErr (err )
418+ }()
419+
420+ var h * hugolib.HugoSites
421+ h , err = c .hugo ()
423422 if err != nil {
424- return err
423+ return
425424 }
426- return h .Build (hugolib.BuildCfg {NoBuildLock : noBuildLock })
425+ err = h .Build (hugolib.BuildCfg {NoBuildLock : noBuildLock })
426+ return
427427}
428428
429429func (c * hugoBuilder ) copyStatic () (map [string ]uint64 , error ) {
@@ -619,6 +619,9 @@ func (c *hugoBuilder) fullRebuild(changeType string) {
619619 // Set the processing on pause until the state is recovered.
620620 c .errState .setPaused (true )
621621 c .handleBuildErr (err , "Failed to reload config" )
622+ if c .s .doLiveReload {
623+ livereload .ForceRefresh ()
624+ }
622625 } else {
623626 c .errState .setPaused (false )
624627 }
@@ -1081,37 +1084,44 @@ func (c *hugoBuilder) printChangeDetected(typ string) {
10811084 c .r .logger .Println (htime .Now ().Format (layout ))
10821085}
10831086
1084- func (c * hugoBuilder ) rebuildSites (events []fsnotify.Event ) error {
1087+ func (c * hugoBuilder ) rebuildSites (events []fsnotify.Event ) (err error ) {
1088+ defer func () {
1089+ c .errState .setBuildErr (err )
1090+ }()
10851091 if err := c .errState .buildErr (); err != nil {
10861092 ferrs := herrors .UnwrapFileErrorsWithErrorContext (err )
10871093 for _ , err := range ferrs {
10881094 events = append (events , fsnotify.Event {Name : err .Position ().Filename , Op : fsnotify .Write })
10891095 }
10901096 }
1091- c . errState . setBuildErr ( nil )
1092- h , err : = c .hugo ()
1097+ var h * hugolib. HugoSites
1098+ h , err = c .hugo ()
10931099 if err != nil {
1094- return err
1100+ return
10951101 }
1096-
1097- return h . Build (hugolib. BuildCfg { NoBuildLock : true , RecentlyVisited : c . visitedURLs , ErrRecovery : c . errState . wasErr ()}, events ... )
1102+ err = h . Build (hugolib. BuildCfg { NoBuildLock : true , RecentlyVisited : c . visitedURLs , ErrRecovery : c . errState . wasErr ()}, events ... )
1103+ return
10981104}
10991105
1100- func (c * hugoBuilder ) rebuildSitesForChanges (ids []identity.Identity ) error {
1101- c .errState .setBuildErr (nil )
1102- h , err := c .hugo ()
1106+ func (c * hugoBuilder ) rebuildSitesForChanges (ids []identity.Identity ) (err error ) {
1107+ defer func () {
1108+ c .errState .setBuildErr (err )
1109+ }()
1110+
1111+ var h * hugolib.HugoSites
1112+ h , err = c .hugo ()
11031113 if err != nil {
1104- return err
1114+ return
11051115 }
11061116 whatChanged := & hugolib.WhatChanged {}
11071117 whatChanged .Add (ids ... )
11081118 err = h .Build (hugolib.BuildCfg {NoBuildLock : true , WhatChanged : whatChanged , RecentlyVisited : c .visitedURLs , ErrRecovery : c .errState .wasErr ()})
1109- c . errState . setBuildErr ( err )
1110- return err
1119+
1120+ return
11111121}
11121122
11131123func (c * hugoBuilder ) reloadConfig () error {
1114- c .r .Reset ()
1124+ c .r .resetLogs ()
11151125 c .r .configVersionID .Add (1 )
11161126
11171127 if err := c .withConfE (func (conf * commonConfig ) error {
0 commit comments