summaryrefslogtreecommitdiff
path: root/dot/local/bin/lpdf
blob: 41f52c4ed7a55b15116d8b006b3ee7d0f7382068 (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
#!/bin/bash
# lpdf -- print with lp to a PDF file; output the filename to stdout

move_pdf()
{
    local o f="$1"
    o=$f
    o=${o##*/}
    o=${o%%__*}
    o=${o%.txt}.pdf
    mv -i -T -- "$f" "$o"
}

run_lp()
{
    set -x
    lp "$@" -d PDF
}

extract_lp_pdf_filename()
{
    read _ _ _ pdf _
    case "$pdf" in
        PDF-*) glob=$(printf "~/PDF/*-job_%s.pdf\n" "${pdf#PDF-}") ;;
        *) exit 1 ;;
    esac

    sleep=1
    while true
    do
        if f=$(shopt -s failglob; 2>/dev/null eval "echo $glob")
        then
            printf "%s\n" "$f"
            break
        else
            sleep $sleep
            sleep=$((sleep + 1))
        fi
    done
}

set -e
read pdf < <(run_lp "$@" | extract_lp_pdf_filename)
move_pdf "$pdf"