aboutsummaryrefslogtreecommitdiff
path: root/scripts/.local/bin/personal/compile
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/.local/bin/personal/compile')
-rwxr-xr-xscripts/.local/bin/personal/compile81
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