-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathbuild.sh
executable file
·82 lines (63 loc) · 1.83 KB
/
build.sh
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#!/usr/bin/env bash
source ./setup.conf
ALLOWED_TYPES=()
for f in src/CV/*.tex; do
ALLOWED_TYPES+=( "$(basename "$f" .tex)" )
done
declare -a BUILD_MATRIX
for _types in "${BUILD_TYPES[@]}";
do
if [ ! -f "src/CV/$_types.tex" ]; then
echo "CV type $_types does not exist."
exit 1
fi
# default no cover letters is also a type
BUILD_MATRIX+=( "${_types}" )
for _letter in "${COVER_LETTERS[@]}";
do
BUILD_MATRIX+=( "${_types},${_letter}" )
done
done
echo "building ("
echo "${BUILD_MATRIX[@]}" | xargs -n1 | xargs -I{} echo " {}"
echo ")"
sleep 2
rm -Rf ./build || true
declare -a PARALEL_MATRIX
for _types in "${BUILD_MATRIX[@]}";
do
IFS=',' read -r -a ARGS < <(echo "${_types}")
TYPE="${ARGS[0]}CV"
COVER_LETTER="${ARGS[1]}"
# rebrand into something unique and readable
COVER_LETTER_ID=$(basename "${COVER_LETTER}" .tex)
COVER_LETTER_LOCATION=$(readlink -f "$(dirname "${COVER_LETTER}")")
if [ "_${COVER_LETTER}" != "_" ] && [ -f "${COVER_LETTER}" ]
then
NAME="${TYPE},${COVER_LETTER_ID}"
else
NAME="${TYPE}"
fi
echo "setup $NAME"
PARALEL_MATRIX+=( "${NAME}" )
mkdir -p "./build/$NAME" &> /dev/null || /bin/true
{
echo "\def\\$TYPE{}"
[ "_${COVER_LETTER}" != "_" ] && [ -f "${COVER_LETTER}" ] && echo "\def\\coverLetter{$COVER_LETTER}"
echo "\input{src/CV/${ARGS[0]}}"
} > "./build/$NAME/$NAME.tex"
echo "
#!/bin/bash
rm ${OUTPUT_DIR}/$NAME.pdf
export TEXINPUTS=.:${PWD}:${COVER_LETTER_LOCATION}:$TEXINPUTS
export BIBINPUTS=${PWD}
set -xe
pushd ./build/$NAME/
latexmk ${LATEXMK_ARGS[*]} $NAME.tex
popd
mv ./build/$NAME/$NAME.pdf ${OUTPUT_DIR}
" > "./build/$NAME/build.sh"
done
# cleanup
rm ./*.pdf || true
echo ./build/*/build.sh | xargs -n1 | xargs -P "$(nproc --all)" -I {} /bin/bash {}