scripts/buildpdf/buildpdf.sh

111 lines
1.8 KiB
Bash
Raw Normal View History

2015-05-27 19:41:08 +02:00
#!/bin/bash
# A script for automatically creating PDf files from a latex document
# You can set the amounts of builds and the time between these builds
# Usage: ./buildpdf.sh filename [build amount] [time between builds in s]
2017-02-15 13:14:48 +01:00
# Marcel Michael Kapfer (mmk2410)
# 6th January 2015 - 2017
2015-05-27 19:41:08 +02:00
# GNU GPL v3.0 -> Feel free to re-distribute it or fork it
2017-02-15 13:14:48 +01:00
print() {
local text="$1"
date "+[%F %T] $text"
2017-02-15 13:26:32 +01:00
2017-02-15 13:14:48 +01:00
}
run() {
local filename="$1"
local number="$2"
2017-02-15 13:26:32 +01:00
print "Building..."
2017-02-15 13:14:48 +01:00
pdflatex "$filename" > /dev/null 2>&1
print "Build $number ready"
}
build() {
local filename="$1"
local builds="$2"
local sleeptime="$3"
local i="1"
while [[ "$i" -le "$builds" ]]; do
run "$filename" "$i"
if [[ "$i" -lt "$builds" ]]; then
print "Waiting $sleeptime seconds - then build again"
sleep "$sleeptime"
else
print "Jobs done. Exiting now..."
2015-05-27 19:41:08 +02:00
fi
2017-02-15 13:14:48 +01:00
((++i))
done
}
build_infty() {
local filename="$1"
local builds="1"
local sleeptime="$2"
while : ; do
run "$filename" "$builds"
print "Waiting $sleeptime seconds - then build again"
sleep "$sleeptime"
((++builds))
done
}
main() {
if [[ -z "$1" || "$1" == "--help" || "$1" == "-h" ]]; then
cat <<EOF
Usage: buildpdf.sh filename [build amount] [sleep time]
Options:
build amount: how many times the pdf should be created.
Leave empty or set to '0' for infinity builds.
sleep time: time in seconds between the builds.
Leave empty will create the pdf every 120 seconds.
EOF
exit
else
filename="$1"
fi
if [[ -z "$2" ]]; then
builds=0
else
builds="$2"
fi
if [[ -z "$3" ]]; then
sleeptime=120
else
sleeptime="$3"
fi
if [[ "$builds" == 0 ]]; then
build_infty "$filename" "$sleeptime"
else
build "$filename" "$builds" "$sleeptime"
fi
}
main "$@"