aboutsummaryrefslogtreecommitdiff
path: root/scripts/compile
blob: f0385623c15ab617c3251280192306e3842e20f4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#!/bin/bash

# A script to compile any (here defined) type of text file to a target format
# Depends on: bash, basename, pdflatex
# By David Penkowoj, 2021/08/02

# 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() {
  pandoc "$1" -o "$2.pdf" &&
  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 "$1" > /dev/null &&  
  pdflatex "$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"
}

# 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
    "tex")
      TEX_TO_PDF "$1" "${FILENAME%.*}"
      ;;
    "md")
      MD_TO_PDF "$1" "${FILENAME%.*}"
      ;;
    "lp")
      LP_TO_PDF "$1" "${FILENAME%.*}"
      ;;
    "pov")
      povray "$1"
      ;;
    *)
      printf "[ Error ] There is no entry on how to handle '%s' files.\n" "$EXTENSION"
      exit 1
  esac
fi

exit 0