compile 1.6 KB

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