aboutsummaryrefslogtreecommitdiffhomepage
path: root/transform/chain.go
diff options
context:
space:
mode:
Diffstat (limited to 'transform/chain.go')
-rw-r--r--transform/chain.go15
1 files changed, 14 insertions, 1 deletions
diff --git a/transform/chain.go b/transform/chain.go
index 74217dc72..2d70b9356 100644
--- a/transform/chain.go
+++ b/transform/chain.go
@@ -16,8 +16,11 @@ package transform
import (
"bytes"
"io"
+ "io/ioutil"
bp "github.com/gohugoio/hugo/bufferpool"
+ "github.com/gohugoio/hugo/common/herrors"
+ "github.com/gohugoio/hugo/hugofs"
)
// Transformer is the func that needs to be implemented by a transformation step.
@@ -103,7 +106,17 @@ func (c *Chain) Apply(to io.Writer, from io.Reader) error {
}
if err := tr(fb); err != nil {
- return err
+ // Write output to a temp file so it can be read by the user for trouble shooting.
+ filename := "output.html"
+ tempfile, ferr := ioutil.TempFile("", "hugo-transform-error")
+ if ferr == nil {
+ filename = tempfile.Name()
+ defer tempfile.Close()
+ _, _ = io.Copy(tempfile, fb.from)
+ return herrors.NewFileErrorFromFile(err, filename, filename, hugofs.Os, nil)
+ }
+ return herrors.NewFileError(filename, err).UpdateContent(fb.from, nil)
+
}
}