diff --git a/.local/bin/exportmd b/.local/bin/exportmd new file mode 100755 index 0000000..a26c50e --- /dev/null +++ b/.local/bin/exportmd @@ -0,0 +1,77 @@ +#!/bin/sh -e + +html() { + echo "" + if test -n "$style"; then + echo " + +" + fi + cmark --unsafe < "$1" +} + +format="$1" +input="$2" + +if test ! -f "$input"; then + echo "no existe el archivo \`$input\`." + exit 1 +fi + +output="$(dirname "$input")/$(basename "$input" .md).$format" + +if grep "TODO|XXX" "$input" >/dev/null; then + echo "Ojo, ¡todavía tenés TODOs o XXXs!" +fi + +if test "$format" = epub -o "$format" = rtf -o "$format" = docx; then + htmlfile="${input%.md}.html" + style=true html "$input" > "$htmlfile" + + #if which pandoc >/dev/null; then + # pandoc --reference-doc=$HOME/template.docx -s -o "$output" "$htmlfile" + if which libreoffice >/dev/null; then + echo libreoffice --headless --writer --convert-to "$format" "$htmlfile" + libreoffice --headless --writer --convert-to "$format" "$htmlfile" + else + echo "No tengo libreoffice para convertir a $format." + rm "$htmlfile" + exit 1 + fi + + rm "$htmlfile" +elif test "$format" = html; then + style=true html "$input" > "$output" +elif test "$format" = standalone.html; then + html "$input" > "$output" + echo "" >> "$output" +elif test "$format" = pdf; then + style=true html "$input" | weasyprint -u "$(dirname "$input")" - "$output" +else + echo "no conozco el formato \`$format\`." + exit 1 +fi