summaryrefslogtreecommitdiffstats
path: root/commands
diff options
context:
space:
mode:
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2019-12-20 08:11:36 +0100
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2019-12-20 11:38:44 +0100
commit8a58ebb311fd079f65068e7e37725e4d43f17ab5 (patch)
treeb214284b27d2a2cf35ba0689bea688bdd0597e5f /commands
parent0453683816cfbc94e1e19c644f5f84213bb8cf35 (diff)
hugolib: Improve error and reload handling of hook templates in server mode
Fixes #6635
Diffstat (limited to 'commands')
-rw-r--r--commands/commandeer.go1
-rw-r--r--commands/hugo.go10
-rw-r--r--commands/server.go1
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 {