Skip to content

Commit

Permalink
commands: Move time notification to after any build errors
Browse files Browse the repository at this point in the history
This allows error parsers (VSCode problemMatchers) to use the time notification as bounds for detecting errors.

Closes #8403
  • Loading branch information
jhollowe authored Jul 5, 2021
1 parent 07919d1 commit 04dc469
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 7 deletions.
10 changes: 9 additions & 1 deletion commands/commands.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
},
})

Expand Down
12 changes: 7 additions & 5 deletions commands/hugo.go
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down Expand Up @@ -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()
Expand Down Expand Up @@ -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 {
Expand Down
14 changes: 13 additions & 1 deletion commands/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
}

Expand Down

0 comments on commit 04dc469

Please sign in to comment.