diff options
Diffstat (limited to 'scripts/.local/bin/personal/compile')
-rwxr-xr-x | scripts/.local/bin/personal/compile | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/scripts/.local/bin/personal/compile b/scripts/.local/bin/personal/compile new file mode 100755 index 0000000..028ae11 --- /dev/null +++ b/scripts/.local/bin/personal/compile @@ -0,0 +1,81 @@ +#!/bin/bash + +# A script to compile any (here defined) type of text file to a target format +# Depends on: bash, basename, pdflatex, pandoc, asciidoctor +# By David Penkowoj, 2021/08/02 + +# Function to compile .md to .pdf files +ADOC_TO_HTML() { + asciidoctor "$1" && + printf "Successfully compiled %s to %s\n" "$1" "$2.pdf" || + printf "[ Error ] Couldn't compile %s\n" "$1" +} + +# Function to compile .tex to .pdf files without making a mess +TEX_TO_PDF() { + printf "If the script seems to hang, try pressing <Enter>\n" + + pdflatex -shell-escape "$1" > /dev/null && + pdflatex -shell-escape "$1" > /dev/null && # This is to ensure certain tex elements being drawn + rm -rf "$2.toc" "$2.log" "$2.aux" && + printf "Successfully compiled %s to %s\n" "$2.tex" "$2.pdf" || + printf "[ Error ] Couldn't compile %s\n" "$2.tex" +} + +# Function to compile .lp to .pdf files +LP_TO_PDF() { + lilypond "$1" --pdf -s -o "$2.pdf" && + printf "Successfully compiled %s to %s\n" "$1" "$2.pdf" || + printf "[ Error ] Couldn't compile %s\n" "$1" +} + +# Function to compile .md to .pdf files +MD_TO_PDF() { + TMP="/tmp/compilemd" + + sed '/^!.*/d' "$1" > "$TMP" && # This enables comments with "!" + sed 's/^\\!/!/g' "$TMP" "$TMP" && # This enables escaping with "\!" + + pandoc "$TMP" -o "$2.pdf" && + printf "Successfully compiled %s to %s\n" "$1" "$2.pdf" || + printf "[ Error ] Couldn't compile %s\n" "$1" +} + +# Check if file exists +if [[ -e "$1" ]]; then + # Determine filename and extension + FILENAME="$(basename -- "$1")" + EXTENSION="${FILENAME##*.}" + + # Check if there is a extension at all + if [[ "$FILENAME" == "$EXTENSION" ]]; then + printf "[ Error ] The specified file has no extension\n" + exit 1 + fi + + # Do the respective compile actions + case "$EXTENSION" in + "adoc") + ADOC_TO_HTML "$1" "${FILENAME%.*}" + ;; + "tex") + TEX_TO_PDF "$1" "${FILENAME%.*}" + ;; + "pov") + povray "$1" + ;; + "lp") + MD_TO_PDF "$1" "${FILENAME%.*}" + ;; + "md") + MD_TO_PDF "$1" "${FILENAME%.*}" + ;; + *) + printf "[ Error ] There is no entry on how to handle '%s' files.\n" "$EXTENSION" + exit 1 + esac +else + printf "[ Error ] No file specified!\n" +fi + +exit 0 |