Whoops
[llpp.git] / llppac
blob2bcfa963a514e231c73fe22af02a2833dd3833f2
1 #!/bin/sh
3 set -e
5 CACHEDIR=$HOME/.config/llpp
7 die()
9 fmt=$1
10 shift
11 printf "$fmt\n" "$*" >&2
12 exit 1
15 trap '! test -z $casp && rm -f $casp' 0
17 test -d $CACHEDIR || die "cache directory %s does not exist" $CACHEDIR
18 test -z "$1" && die "usage %s: path" $0
20 ft=$(file --mime-type -b "$1")
22 case $ft in
23 application/x-gzip) dc=zcat;;
24 application/x-xz) dc=xzcat;;
25 application/x-bzip2) dc=bzcat;;
26 *) unset dc;;
27 esac
29 test -z $dc || ft=$(file --mime-type -bz "$1")
31 case $ft in
32 application/postscript) conv='ps2pdf $1 $casp';;
33 application/pdf) {
34 test -z $dc && exec llpp "$1" || conv='cat >$casp'
35 };;
36 application/msword) conv='antiword -p a4 $1 | ps2pdf - $casp';;
37 image/vnd.djvu) conv='djvups $1 | ps2pdf - $casp';;
38 image/svg+xml) conv='inkscape -z -A $casp $1';;
39 application/x-dvi) {
40 test -z $dc || die "can not handle compressed DVIs";
41 conv='dvipdf $1 $casp'
42 };;
43 *) die "unhandled file type: %s" $ft;;
44 esac
46 hash=$(md5sum "$1" | cut -f 1 -d\ )
48 casp="$CACHEDIR/$hash"
50 if ! test -e $casp; then
51 test -z $dc && cmd="$conv" || cmd="$dc \"$1\" | $conv"
52 eval "$cmd"
54 exec llpp -origin "$1" $casp