Hello,
Thanks for sharing.
I did not want to use Hugo-specific language in my writings, as they may be shared in other processors (like Pandoc).
This is why I wrote this script (discussion and source on Github) :
#!/bin/sh
# This script converts a .md Markdown file into a HTML file.
# It takes advantage of Pandoc for that, but keeps the front
# matter verbatim in order to process it into Hugo.
# tmp file:
TMP=`mktemp`
BASE=`basename $1 .md`
DIR=`dirname $1`
HTML="${DIR}/${BASE}.html"
# 1) Get the frontmatter into the final html file
sed -n '1 { /^---/ { :a N; /\n---/! ba; p} }' $1 > ${HTML}
# 2) Get the rest of the Markdown content in a temp file
sed '1 { /^---/ { :a N; /\n---/! ba; d} }' $1 >> ${TMP}
# 3) Convert Markdown into HTML using pandoc and append it to html file
pandoc -f markdown-yaml_metadata_block -t html --parse-raw ${TMP} >> ${HTML}
# 4) Remove the draft line
grep -v "draft:\s*true" ${HTML} > ${TMP}
mv ${TMP} ${HTML}
# LAST: The temporary file has been moved into $HTML,
# there is no need to delete it.
#rm ${TMP}
exit 0
Feel free to use it for you. You only have to reserve the draft:true
for post that you want to convert to HTML using that rich and wide Markdown processor.
I put that in my deploy
script:
#!/bin/sh
# This script ensures the site is ok to build against Hugo.
DIR=`pwd`
# Uses md2htmlyaml (https://gist.github.com/lebarde/3b49a8ff8ea9940829559c3e439bee9c)
# to convert complex Markdown files to HTML.
# Grep searches for all the drafts
# ...But there was many temporary files ending with ~.
DRAFTS=`grep -lr "draft:\s*true" content | grep -v "~"`
# Convert all the drafts
for i in $DRAFTS; do
md2htmlyaml $i
done
# Publish
rm -rf public
hugo && rsync -avz --delete public/ my-user@my-host.com:~/sites/my-site.com/
exit 0
Enjoy