summaryrefslogtreecommitdiffstats
path: root/commands
diff options
context:
space:
mode:
authorJohn Hollowell <johnahollowell@gmail.com>2021-07-05 04:38:54 -0400
committerGitHub <noreply@github.com>2021-07-05 10:38:54 +0200
commit04dc469fbd78d9fe784829f2cba61c8cce982bdb (patch)
tree020059d5a610783812f09f3858b7b9b34a1c72bf /commands
parent07919d1ccb01733f4c6c5952e59228cecc9b26c8 (diff)
commands: Move time notification to after any build errors
This allows error parsers (VSCode problemMatchers) to use the time notification as bounds for detecting errors. Closes #8403
Diffstat (limited to 'commands')
-rw-r--r--commands/commands.go10
-rw-r--r--commands/hugo.go12
-rw-r--r--commands/server.go14
3 files changed, 29 insertions, 7 deletions
diff --git a/commands/commands.go b/commands/commands.go
index 235f35917..c4d37ab3e 100644
--- a/commands/commands.go
+++ b/commands/commands.go
@@ -162,13 +162,21 @@ Complete documentation is available at http://gohugo.io/.`,
return nil
}
+ // prevent cobra printing error so it can be handled here (before the timeTrack prints)
+ cmd.SilenceErrors = true
+
c, err := initializeConfig(true, cc.buildWatch, &cc.hugoBuilderCommon, cc, cfgInit)
if err != nil {
+ cmd.PrintErrln("Error:", err.Error())
return err
}
cc.c = c
- return c.build()
+ err = c.build()
+ if err != nil {
+ cmd.PrintErrln("Error:", err.Error())
+ }
+ return err
},
})
diff --git a/commands/hugo.go b/commands/hugo.go
index 86aa8d573..0f6e4274a 100644
--- a/commands/hugo.go
+++ b/commands/hugo.go
@@ -539,7 +539,6 @@ func (c *commandeer) build() error {
}
func (c *commandeer) serverBuild() error {
- defer c.timeTrack(time.Now(), "Built")
stopProfiling, err := c.initProfiling()
if err != nil {
@@ -737,7 +736,6 @@ func (c *commandeer) handleBuildErr(err error, msg string) {
}
func (c *commandeer) rebuildSites(events []fsnotify.Event) error {
- defer c.timeTrack(time.Now(), "Total")
c.buildErr = nil
visited := c.visitedURLs.PeekAllSet()
@@ -1124,9 +1122,13 @@ func (c *commandeer) handleEvents(watcher *watcher.Batcher,
c.printChangeDetected("")
c.changeDetector.PrepareNew()
- if err := c.rebuildSites(dynamicEvents); err != nil {
- c.handleBuildErr(err, "Rebuild failed")
- }
+
+ func() {
+ defer c.timeTrack(time.Now(), "Total")
+ if err := c.rebuildSites(dynamicEvents); err != nil {
+ c.handleBuildErr(err, "Rebuild failed")
+ }
+ }()
if doLiveReload {
if len(partitionedEvents.ContentEvents) == 0 && len(partitionedEvents.AssetEvents) > 0 {
diff --git a/commands/server.go b/commands/server.go
index 5c8c778d4..09cf43b24 100644
--- a/commands/server.go
+++ b/commands/server.go
@@ -236,12 +236,24 @@ func (sc *serverCmd) server(cmd *cobra.Command, args []string) error {
jww.WARN.Println("memstats error:", err)
}
+ // silence errors in cobra so we can handle them here
+ cmd.SilenceErrors = true
+
c, err := initializeConfig(true, true, &sc.hugoBuilderCommon, sc, cfgInit)
if err != nil {
+ cmd.PrintErrln("Error:", err.Error())
return err
}
- if err := c.serverBuild(); err != nil {
+ err = func() error {
+ defer c.timeTrack(time.Now(), "Built")
+ err := c.serverBuild()
+ if err != nil {
+ cmd.PrintErrln("Error:", err.Error())
+ }
+ return err
+ }()
+ if err != nil {
return err
}