@@ -6,10 +6,10 @@ build_dir=build
6
6
input_file=" "
7
7
8
8
# Arg flags
9
- is_skip_bitex=false
10
- is_dry_run=false
9
+ # is_skip_bitex=false
10
+ # is_dry_run=false
11
11
is_no_cache=false
12
- is_no_spin=false
12
+ # is_no_spin=false
13
13
14
14
# State flags
15
15
is_cached=false
@@ -20,7 +20,7 @@ is_clean=false
20
20
filepath=" "
21
21
filename=" "
22
22
name=" "
23
- ext=" "
23
+ # ext=""
24
24
rel_location=" "
25
25
latex_build_dir=" "
26
26
pdf_dir=" "
@@ -31,7 +31,7 @@ file_deps=""
31
31
32
32
help () {
33
33
cat << EOF
34
- usage: $arg0 [options] <file.tex>
34
+ usage: $script_name [options] <file.tex>
35
35
36
36
options:
37
37
-h, --help Show this menu.
45
45
}
46
46
47
47
parse_args () {
48
- if [[ $# = 0 ] ]; then
48
+ if [ $# = 0 ]; then
49
49
printf " error: no input file\n"
50
50
help
51
51
exit 1
52
52
fi
53
53
54
- while [[ $# -gt 0 ] ]; do
54
+ while [ $# -gt 0 ]; do
55
55
key=" $1 "
56
56
case $key in
57
57
--help | -h)
58
58
help
59
59
exit 0
60
60
;;
61
- --dry-run)
62
- is_dry_run=true
63
- ;;
61
+ # --dry-run)
62
+ # is_dry_run=true
63
+ # ;;
64
64
--build-dir=* )
65
65
build_dir=" ${key#* =} "
66
66
;;
67
- --skip-bibtex)
68
- is_skip_bitex=true
69
- ;;
67
+ # --skip-bibtex)
68
+ # is_skip_bitex=true
69
+ # ;;
70
70
--no-cache)
71
71
is_no_cache=true
72
72
;;
73
- --no-spin)
74
- is_no_spin=true
75
- ;;
73
+ # --no-spin)
74
+ # is_no_spin=true
75
+ # ;;
76
76
--clean)
77
77
is_clean=true
78
78
;;
79
79
* )
80
- if [[ $has_input = true ] ]; then
80
+ if [ $has_input = true ]; then
81
81
printf " Only one input file is allowed!\n"
82
82
exit 1
83
83
fi
@@ -92,85 +92,85 @@ parse_args() {
92
92
93
93
recursive_index () {
94
94
# Check if file exist before we analyze it
95
- if ! [[ -e " $1 " ] ]; then
95
+ if ! [ -e " $1 " ]; then
96
96
return 0
97
97
fi
98
98
99
99
_grep_regex=' ((input)|(includegraphics\[.*\])|(addbibresource))\{.+\}'
100
100
_replace_regex=' s/\\((input)|(includegraphics\[.*\])|(addbibresource))\{(.+)\}/\5/'
101
101
if ! [ -d " $1 " ]; then
102
- _deps=$( cat " $1 " | grep -E " $_grep_regex " | sed -r " $_replace_regex " )
102
+ _deps=$( grep -E " $_grep_regex " < " $1 " | sed -r " $_replace_regex " )
103
103
else
104
104
_deps=" "
105
105
fi
106
106
107
- if ! [[ -z " $_deps " ] ]; then
108
- if ! [[ -z " $file_deps " ] ]; then
107
+ if [ -n " $_deps " ]; then
108
+ if [ -n " $file_deps " ]; then
109
109
file_deps=" $file_deps \n$_deps "
110
110
else
111
111
file_deps=" $_deps "
112
112
fi
113
113
114
- for file in " $_deps " ; do
115
- filepath=" $( dirname $1 ) /$file "
116
- recursive_index $filepath
114
+ for file in $_deps ; do
115
+ filepath=" $( dirname " $1 " ) /$file "
116
+ recursive_index " $filepath "
117
117
done
118
118
fi
119
119
}
120
120
121
121
prebuild () {
122
- if ! [[ -e $input_file ] ]; then
123
- printf " File $input_file does not exist!\n"
122
+ if ! [ -e " $input_file " ]; then
123
+ printf " File %s does not exist!\n" " $input_file "
124
124
exit 1
125
125
fi
126
126
127
- filepath=" $( realpath $input_file ) "
127
+ filepath=" $( realpath " $input_file " ) "
128
128
filename=" $( basename " $input_file " ) "
129
129
name=" ${filename% .* } "
130
- ext=" ${filename##* .} "
131
- rel_location=" $( dirname $input_file ) "
130
+ # ext="${filename##*.}"
131
+ rel_location=" $( dirname " $input_file " ) "
132
132
latex_build_dir=" $build_dir /tex/$rel_location "
133
133
pdf_dir=" $build_dir /pdf/$rel_location "
134
134
135
- if ! [[ -e $build_dir ] ]; then
136
- mkdir -p $build_dir
135
+ if ! [ -e " $build_dir " ]; then
136
+ mkdir -p " $build_dir "
137
137
fi
138
138
139
- if ! [[ -e $latex_build_dir ] ]; then
140
- mkdir -p $latex_build_dir
141
- elif [[ -e $latex_build_dir ]] && [[ $is_clean = true ] ]; then
142
- rm -rf $latex_build_dir
143
- mkdir -p $latex_build_dir
139
+ if ! [ -e " $latex_build_dir " ]; then
140
+ mkdir -p " $latex_build_dir "
141
+ elif [ -e " $latex_build_dir " ] && [ $is_clean = true ]; then
142
+ rm -rf " $latex_build_dir "
143
+ mkdir -p " $latex_build_dir "
144
144
fi
145
145
146
- if ! [[ -e $pdf_dir ] ]; then
147
- mkdir -p $pdf_dir
148
- elif [[ -e $pdf_dir ]] && [[ $is_clean = true ] ]; then
149
- rm -rf $pdf_dir
150
- mkdir -p $pdf_dir
146
+ if ! [ -e " $pdf_dir " ]; then
147
+ mkdir -p " $pdf_dir "
148
+ elif [ -e " $pdf_dir " ] && [ $is_clean = true ]; then
149
+ rm -rf " $pdf_dir "
150
+ mkdir -p " $pdf_dir "
151
151
fi
152
152
153
153
# Convert output path to absolute
154
154
abs_latex_build_dir=$( realpath " $build_dir /tex/$rel_location " )
155
155
abs_pdf_dir=$( realpath " $build_dir /pdf/$rel_location " )
156
156
pdf_latex_dir=" $abs_pdf_dir /$name "
157
157
158
- if ! [[ -e " $pdf_latex_dir " ] ]; then
158
+ if ! [ -e " $pdf_latex_dir " ]; then
159
159
mkdir -p " $pdf_latex_dir "
160
- elif [[ -e $pdf_latex_dir ]] && [[ $is_clean = true ] ]; then
161
- rm -rf $pdf_latex_dir
160
+ elif [ -e " $pdf_latex_dir " ] && [ $is_clean = true ]; then
161
+ rm -rf " $pdf_latex_dir "
162
162
mkdir -p " $pdf_latex_dir "
163
163
fi
164
164
165
165
# Generate local registry for dependencies
166
- recursive_index $filepath
166
+ recursive_index " $filepath "
167
167
file_deps=$( echo " $file_deps " | sed -r " s/[ %]*//" | sort -u)
168
168
}
169
169
170
170
parse_info () {
171
- if [ $1 -ne 0 ]; then
172
- printf " \r$2 : failed, check $ latex_build_dir /$2 .log\n "
173
- cat $abs_latex_build_dir / $2 .log | awk ' BEGIN{IGNORECASE = 1}/warning|!|Runaway argument\?/,/^$/;'
171
+ if [ " $1 " -ne 0 ]; then
172
+ printf " \r%s : failed, check %s\n " " $2 " " $ latex_build_dir /$2 .log"
173
+ awk ' BEGIN{IGNORECASE = 1}/warning|!|Runaway argument\?/,/^$/;' < " $abs_latex_build_dir / $2 .log "
174
174
exit 1
175
175
fi
176
176
}
@@ -180,35 +180,35 @@ exec_build_cmd() {
180
180
cmd=$2
181
181
log_file=" $abs_latex_build_dir /$exec_name .log"
182
182
183
- $cmd > $log_file
183
+ $cmd > " $log_file "
184
184
exit_code=$?
185
185
parse_info $exit_code " $exec_name "
186
186
}
187
187
188
188
check_cache () {
189
189
is_cached=false
190
190
191
- if ! [[ -e " $abs_pdf_dir /$name .pdf" ]] || ! [[ -e " $pdf_latex_dir /$filename " ] ]; then
191
+ if ! [ -e " $abs_pdf_dir /$name .pdf" ] || ! [ -e " $pdf_latex_dir /$filename " ]; then
192
192
return 0
193
193
fi
194
194
195
- input_check_sum=$( sha256sum $input_file | cut -d ' ' -f 1)
195
+ input_check_sum=$( sha256sum " $input_file " | cut -d ' ' -f 1)
196
196
output_check_sum=$( sha256sum " $pdf_latex_dir /$filename " | cut -d ' ' -f 1)
197
- if ! [[ $input_check_sum = $output_check_sum ] ]; then
197
+ if ! [ " $input_check_sum " = " $output_check_sum " ]; then
198
198
return 0
199
199
fi
200
200
201
201
for file in $file_deps ; do
202
- if [[ -e $rel_location /$file ]] && [[ -e $pdf_latex_dir /$file ] ]; then
203
- asum=$( sha256sum $rel_location /$file | cut -d ' ' -f 1)
204
- bsum=$( sha256sum $pdf_latex_dir /$file | cut -d ' ' -f 1)
202
+ if [ -e " $rel_location /$file " ] && [ -e " $pdf_latex_dir /$file " ]; then
203
+ asum=$( sha256sum " $rel_location /$file " | cut -d ' ' -f 1)
204
+ bsum=$( sha256sum " $pdf_latex_dir /$file " | cut -d ' ' -f 1)
205
205
206
- if ! [[ $asum = $bsum ] ]; then
206
+ if ! [ " $asum " = " $bsum " ]; then
207
207
return 0
208
208
fi
209
209
else
210
210
# Special case for inline bibtex addbibresource{}
211
- if ! [[ " ${file##* .} " = " bib" ] ]; then
211
+ if ! [ " ${file##* .} " = " bib" ]; then
212
212
return 0
213
213
fi
214
214
fi
@@ -218,54 +218,54 @@ check_cache() {
218
218
}
219
219
220
220
build () {
221
- if [[ $is_cached = true ]] && [[ $is_no_cache = false ] ]; then
222
- printf " $input_file is cached.\n"
221
+ if [ $is_cached = true ] && [ $is_no_cache = false ]; then
222
+ printf " %s is cached.\n" " $input_file "
223
223
return 0
224
224
fi
225
225
226
- printf " compiling $input_file ..."
226
+ printf " compiling %s ..." " $input_file "
227
227
228
228
current_dir=$( pwd)
229
- cd $rel_location
229
+ cd " $rel_location " || exit 1
230
230
exec_build_cmd " stage1" " pdflatex -halt-on-error --interaction=nonstopmode -output-directory=$abs_latex_build_dir $filename "
231
231
exec_build_cmd " stage2" " biber $abs_latex_build_dir /$name "
232
232
exec_build_cmd " stage3" " pdflatex -halt-on-error --interaction=nonstopmode -output-directory=$abs_latex_build_dir $filename "
233
- cd $current_dir
233
+ cd " $current_dir " || exit 1
234
234
235
235
printf " done!\n"
236
236
}
237
237
238
238
postbuild () {
239
- if [[ $is_cached = true ]] && [[ $is_no_cache = false ] ]; then
239
+ if [ $is_cached = true ] && [ $is_no_cache = false ]; then
240
240
return 0
241
241
fi
242
242
243
- if ! [[ -e $abs_pdf_dir ] ]; then
243
+ if ! [ -e " $abs_pdf_dir " ]; then
244
244
printf " PDF output path does not exist!\n"
245
245
return 1
246
246
fi
247
247
248
- if [[ -e " $abs_latex_build_dir /$name .pdf" ] ]; then
249
- cp " $abs_latex_build_dir /$name .pdf" $abs_pdf_dir
248
+ if [ -e " $abs_latex_build_dir /$name .pdf" ]; then
249
+ cp " $abs_latex_build_dir /$name .pdf" " $abs_pdf_dir "
250
250
fi
251
251
252
252
# Copy LaTeX and dependency files
253
- cp $input_file $pdf_latex_dir
253
+ cp " $input_file " " $pdf_latex_dir "
254
254
for file in $file_deps ; do
255
- file_dir=$( dirname $file )
256
- if ! [[ $file_dir = ' .' ] ]; then
255
+ file_dir=$( dirname " $file " )
256
+ if ! [ " $file_dir " = ' .' ]; then
257
257
mkdir -p " $pdf_latex_dir /$file_dir "
258
258
else
259
259
file_dir=" "
260
260
fi
261
- if [[ -e " $rel_location /$file " ] ]; then
261
+ if [ -e " $rel_location /$file " ]; then
262
262
cp " $rel_location /$file " " $pdf_latex_dir /$file_dir "
263
263
fi
264
264
file_dir=" "
265
265
done
266
266
}
267
267
268
- parse_args $@
268
+ parse_args " $@ "
269
269
prebuild
270
270
check_cache
271
271
build
0 commit comments