commands: Support human-readable YAML boolean values in undraft

This commit is contained in:
Victor Kropp 2017-03-14 17:46:33 +01:00 committed by Bjørn Erik Pedersen
parent ccdd08d57a
commit 1039356edf
2 changed files with 11 additions and 11 deletions

View file

@ -25,8 +25,8 @@ import (
var undraftCmd = &cobra.Command{ var undraftCmd = &cobra.Command{
Use: "undraft path/to/content", Use: "undraft path/to/content",
Short: "Undraft changes the content's draft status from 'True' to 'False'", Short: "Undraft resets the content's draft status",
Long: `Undraft changes the content's draft status from 'True' to 'False' Long: `Undraft resets the content's draft status
and updates the date to the current date and time. and updates the date to the current date and time.
If the content's draft status is 'False', nothing is done.`, If the content's draft status is 'False', nothing is done.`,
RunE: Undraft, RunE: Undraft,
@ -138,14 +138,12 @@ L:
for _, v := range fmLines { for _, v := range fmLines {
pos := bytes.Index(v, []byte("draft")) pos := bytes.Index(v, []byte("draft"))
if pos != -1 { if pos != -1 {
v = bytes.Replace(v, []byte("true"), []byte("false"), 1) continue
goto write
} }
pos = bytes.Index(v, []byte("date")) pos = bytes.Index(v, []byte("date"))
if pos != -1 { // if date field wasn't found, add it if pos != -1 { // if date field wasn't found, add it
v = bytes.Replace(v, []byte(date), []byte(time.Now().Format(time.RFC3339)), 1) v = bytes.Replace(v, []byte(date), []byte(time.Now().Format(time.RFC3339)), 1)
} }
write:
buff.Write(v) buff.Write(v)
buff.Write(lineEnding) buff.Write(lineEnding)
} }

View file

@ -25,12 +25,13 @@ import (
) )
var ( var (
jsonFM = "{\n \"date\": \"12-04-06\",\n \"title\": \"test json\"\n}" jsonFM = "{\n \"date\": \"12-04-06\",\n \"title\": \"test json\"\n}"
jsonDraftFM = "{\n \"draft\": true,\n \"date\": \"12-04-06\",\n \"title\":\"test json\"\n}" jsonDraftFM = "{\n \"draft\": true,\n \"date\": \"12-04-06\",\n \"title\":\"test json\"\n}"
tomlFM = "+++\n date= \"12-04-06\"\n title= \"test toml\"\n+++" tomlFM = "+++\n date= \"12-04-06\"\n title= \"test toml\"\n+++"
tomlDraftFM = "+++\n draft= true\n date= \"12-04-06\"\n title=\"test toml\"\n+++" tomlDraftFM = "+++\n draft= true\n date= \"12-04-06\"\n title=\"test toml\"\n+++"
yamlFM = "---\n date: \"12-04-06\"\n title: \"test yaml\"\n---" yamlFM = "---\n date: \"12-04-06\"\n title: \"test yaml\"\n---"
yamlDraftFM = "---\n draft: true\n date: \"12-04-06\"\n title: \"test yaml\"\n---" yamlDraftFM = "---\n draft: true\n date: \"12-04-06\"\n title: \"test yaml\"\n---"
yamlYesDraftFM = "---\n draft: yes\n date: \"12-04-06\"\n title: \"test yaml\"\n---"
) )
func TestUndraftContent(t *testing.T) { func TestUndraftContent(t *testing.T) {
@ -44,6 +45,7 @@ func TestUndraftContent(t *testing.T) {
{tomlDraftFM, ""}, {tomlDraftFM, ""},
{yamlFM, "not a Draft: nothing was done"}, {yamlFM, "not a Draft: nothing was done"},
{yamlDraftFM, ""}, {yamlDraftFM, ""},
{yamlYesDraftFM, ""},
} }
for i, test := range tests { for i, test := range tests {