#!/bin/sh # script to compile some document types [ -z "$1" ] && { echo "Error: Usage: compile [filename]"; exit 1; } file=$(readlink -f "$1") dir=${file%/*} base="${file%.*}" ext="${file##*.}" choosepandoc() { [ -z "$template" ] && template="$(ls $HOME/.config/setup/templates/pandoc/* | \ sed 's/.*\///g' | dmenu -i -l 30 -p "choose pandoc template: ")" [ -z "$newext" ] && newext="$(echo "$template" | sed 's/.*\.//; s/latex/pdf/;')" } textype() { \ command="pdflatex --shell-escape" ( head -n5 "$file" | grep -qi 'xelatex' ) && command="xelatex" ( head -n5 "$file" | grep -qi 'lualatex' ) && command="lualatex" $command --output-directory="$dir" "$base" && grep -qi addbibresource "$file" && biber --input-directory "$dir" "$base" && $command --output-directory="$dir" "$base" && $command --output-directory="$dir" "$base" } case "$ext" in ms) preconv "$file" | groff -"$ext" -dpaper=a4 -P -pa4 -T pdf > "$base.pdf" && pkill -HUP mupdf;; md) choosepandoc; pandoc -V "fontsize=16pt" -s "$file" --template="$HOME/.config/setup/templates/pandoc/$template" -V "fontsize=16pt" -o "$base.$newext"; pkill -HUP mupdf;; rmd) pandoc -s "$file" --template="$HOME/.config/setup/templates/pandoc/german.latex" -o "$base.pdf"; pkill -HUP mupdf;; py) python "$file" ;; [rR]md) Rscript -e "rmarkdown::render('$file', quiet=TRUE)" ;; rs) cargo build ;; sass) sassc -a "$file" "$base.css" ;; scad) openscad -o "$base".stl "$file" ;; sent) setsid -f sent "$file" 2>/dev/null ;; tex) textype "$file"; pkill -HUP mupdf ;; *) echo "Error: unknown file extension '$ext'"; exit 1;#; esac