diff options
author | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2019-12-20 08:11:36 +0100 |
---|---|---|
committer | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2019-12-20 11:38:44 +0100 |
commit | 8a58ebb311fd079f65068e7e37725e4d43f17ab5 (patch) | |
tree | b214284b27d2a2cf35ba0689bea688bdd0597e5f /commands | |
parent | 0453683816cfbc94e1e19c644f5f84213bb8cf35 (diff) |
hugolib: Improve error and reload handling of hook templates in server mode
Fixes #6635
Diffstat (limited to 'commands')
-rw-r--r-- | commands/commandeer.go | 1 | ||||
-rw-r--r-- | commands/hugo.go | 10 | ||||
-rw-r--r-- | commands/server.go | 1 |
3 files changed, 10 insertions, 2 deletions
diff --git a/commands/commandeer.go b/commands/commandeer.go index af711fdd6..c9059dd0c 100644 --- a/commands/commandeer.go +++ b/commands/commandeer.go @@ -88,6 +88,7 @@ type commandeer struct { doLiveReload bool fastRenderMode bool showErrorInBrowser bool + wasError bool configured bool paused bool diff --git a/commands/hugo.go b/commands/hugo.go index 7c831db56..545daa83c 100644 --- a/commands/hugo.go +++ b/commands/hugo.go @@ -718,6 +718,9 @@ func (c *commandeer) handleBuildErr(err error, msg string) { func (c *commandeer) rebuildSites(events []fsnotify.Event) error { defer c.timeTrack(time.Now(), "Total") + defer func() { + c.wasError = false + }() c.buildErr = nil visited := c.visitedURLs.PeekAllSet() @@ -734,16 +737,19 @@ func (c *commandeer) rebuildSites(events []fsnotify.Event) error { } } - return c.hugo().Build(hugolib.BuildCfg{RecentlyVisited: visited}, events...) + return c.hugo().Build(hugolib.BuildCfg{RecentlyVisited: visited, ErrRecovery: c.wasError}, events...) } func (c *commandeer) partialReRender(urls ...string) error { + defer func() { + c.wasError = false + }() c.buildErr = nil visited := make(map[string]bool) for _, url := range urls { visited[url] = true } - return c.hugo().Build(hugolib.BuildCfg{RecentlyVisited: visited, PartialReRender: true}) + return c.hugo().Build(hugolib.BuildCfg{RecentlyVisited: visited, PartialReRender: true, ErrRecovery: c.wasError}) } func (c *commandeer) fullRebuild(changeType string) { diff --git a/commands/server.go b/commands/server.go index 7d884096c..64409ee18 100644 --- a/commands/server.go +++ b/commands/server.go @@ -334,6 +334,7 @@ func (f *fileServer) createEndpoint(i int) (*http.ServeMux, string, string, erro // First check the error state err := f.c.getErrorWithContext() if err != nil { + f.c.wasError = true w.WriteHeader(500) r, err := f.errorTemplate(err) if err != nil { |