shithub: hugo

Download patch

ref: b9bba2b977256642d00938e317cc2b743c418e6e
parent: 0c2544608cfae1e272da252c383c8fa72634eed7
author: spf13 <[email protected]>
date: Thu May 29 14:40:16 EDT 2014

Updating Convert to handle dates properly for yaml and json

Fix bug with YAML & JSON with handling dates with 'new' and 'convert'

--- a/commands/convert.go
+++ b/commands/convert.go
@@ -16,7 +16,9 @@
 import (
 	"fmt"
 	"path"
+	"time"
 
+	"github.com/spf13/cast"
 	"github.com/spf13/cobra"
 	"github.com/spf13/hugo/hugolib"
 	"github.com/spf13/hugo/parser"
@@ -112,6 +114,18 @@
 		if err != nil {
 			jww.ERROR.Println("Error processing file:", path.Join(file.Dir, file.LogicalName))
 			return err
+		}
+
+		// better handling of dates in formats that don't have support for them
+		if mark == parser.FormatToLeadRune("json") || mark == parser.FormatToLeadRune("yaml") {
+			newmetadata := cast.ToStringMap(metadata)
+			for k, v := range newmetadata {
+				switch vv := v.(type) {
+				case time.Time:
+					newmetadata[k] = vv.Format(time.RFC3339)
+				}
+			}
+			metadata = newmetadata
 		}
 
 		page.Dir = file.Dir
--- a/commands/hugo.go
+++ b/commands/hugo.go
@@ -99,7 +99,7 @@
 	viper.RegisterAlias("taxonomies", "indexes")
 
 	viper.SetDefault("Watch", false)
-	viper.SetDefault("MetadataFormat", "toml")
+	viper.SetDefault("MetaDataFormat", "toml")
 	viper.SetDefault("DisableRSS", false)
 	viper.SetDefault("DisableSitemap", false)
 	viper.SetDefault("ContentDir", "content")
--- a/commands/new.go
+++ b/commands/new.go
@@ -23,6 +23,7 @@
 	"github.com/spf13/hugo/helpers"
 	"github.com/spf13/hugo/parser"
 	jww "github.com/spf13/jwalterweatherman"
+	"github.com/spf13/viper"
 )
 
 var siteType string
@@ -33,6 +34,7 @@
 
 func init() {
 	newSiteCmd.Flags().StringVarP(&configFormat, "format", "f", "toml", "config & frontmatter format")
+	newCmd.Flags().StringVarP(&configFormat, "format", "f", "toml", "frontmatter format")
 	newCmd.Flags().StringVarP(&contentType, "kind", "k", "", "Content type to create")
 	newCmd.AddCommand(newSiteCmd)
 	newCmd.AddCommand(newThemeCmd)
@@ -72,6 +74,10 @@
 
 func NewContent(cmd *cobra.Command, args []string) {
 	InitializeConfig()
+
+	if cmd.Flags().Lookup("format").Changed {
+		viper.Set("MetaDataFormat", configFormat)
+	}
 
 	if len(args) < 1 {
 		cmd.Usage()
--- a/create/content.go
+++ b/create/content.go
@@ -90,6 +90,10 @@
 		return err
 	}
 
+	if x := viper.GetString("MetaDataFormat"); x == "json" || x == "yaml" {
+		newmetadata["date"] = time.Now().Format(time.RFC3339)
+	}
+
 	page.Dir = viper.GetString("sourceDir")
 	page.SetSourceMetaData(newmetadata, parser.FormatToLeadRune(viper.GetString("MetaDataFormat")))