commands: Add some band-aid to convert
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Mon, 19 Sep 2016 08:52:07 +0000 (10:52 +0200)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Mon, 19 Sep 2016 08:52:07 +0000 (10:52 +0200)
Fixes #2458

commands/convert.go
hugolib/page.go

index da82178101595bb4fca289a55445f482bd1c3838..a0decf25d9cfab5070eea20f137eac30c06cce79 100644 (file)
@@ -137,7 +137,8 @@ func convertContents(mark rune) (err error) {
                page.SetDir(filepath.Join(helpers.AbsPathify(viper.GetString("ContentDir")), file.Dir()))
                page.SetSourceContent(psr.Content())
                if err = page.SetSourceMetaData(metadata, mark); err != nil {
-                       return fmt.Errorf("Failed to set source metadata for file %q: %s", page.FullFilePath(), err)
+                       jww.ERROR.Printf("Failed to set source metadata for file %q: %s. For more info see For more info see https://github.com/spf13/hugo/issues/2458", page.FullFilePath(), err)
+                       continue
                }
 
                if outputDir != "" {
index b72cfcfe93bb43b63eb5e15b720bc18ede973406..1acd9c0561cac73060c19d3f7b7669e37e179c40 100644 (file)
@@ -1020,15 +1020,28 @@ func (p *Page) SetSourceContent(content []byte) {
 }
 
 func (p *Page) SetSourceMetaData(in interface{}, mark rune) (err error) {
-       by, err := parser.InterfaceToFrontMatter(in, mark)
+       // See https://github.com/spf13/hugo/issues/2458
+       defer func() {
+               if r := recover(); r != nil {
+                       var ok bool
+                       err, ok = r.(error)
+                       if !ok {
+                               err = fmt.Errorf("error from marshal: %v", r)
+                       }
+               }
+       }()
+
+       var by []byte
+
+       by, err = parser.InterfaceToFrontMatter(in, mark)
        if err != nil {
-               return err
+               return
        }
        by = append(by, '\n')
 
        p.Source.Frontmatter = by
 
-       return nil
+       return
 }
 
 func (p *Page) SafeSaveSourceAs(path string) error {