Mnohé textové editory ponúkajú možnosť pomocou nejakej klávesovej skratky spustiť make
v adresári s editovaným súborom. Je to pomerne pohodlné, ale nie vždy chcem na kompilovanie používať make
. Preto som napísal jednoduchý shell skript, ktorý dokáže podľa typu súboru rozhodnúť ako ho skompiluje.
Tu je samotný skript build.sh:
#!/bin/bash
function run() {
echo $@
$@
}
function build_tex() {
LATEX_ARGS=-halt-on-error
FILENAME=$1
MASTER=`grep -oP '(?<=%% master:) [-_\.\w]*' $FILENAME`
if [ -n "$MASTER" ]
then FILENAME=$MASTER
fi
if grep -Fq $'\usepackage{slovak}\n\usepackage{czech}' $FILENAME
then run cslatex $LATEX_ARGS $FILENAME
else run latex $LATEX_ARGS $FILENAME
fi
}
FILENAME=$1
if [ -f Makefile -o -f makefile ]
then run make
elif [ -f SConstruct ]
then run scons -Q
else
EXT=${FILENAME##*.}
case "$EXT" in
"tex")
build_tex $FILENAME
;;
"java")
run javac $FILENAME
;;
"c")
run gcc -Wall -o ${FILENAME%.c} $FILENAME
;;
*)
echo "I don't know how to build your file"
;;
esac
fi
Zatiaľ nepodporuje veľa typov súborov. Pokiaľ je v aktuálnom adresári súbor Makefile, tak spusti make
, pokiaľ je tam súbor SConstruct – spusti scons
. Ak žiaden z týchto súborov nenájde, rozhoduje sa podľa názvu súboru, ktorý dostane ako argument. Vie skompilovať program v C a v Jave, alebo spracovať dokument v LaTeXe. Pridanie podpory pre ďalšie typy súborov je veľmi jednoduché, takže každý si to môže prispôsobiť podľa vlastných potrieb.
Ešte sa zastavím pri spracovávaní dokumentov v LaTeXe. Skript vie rozpoznať či sa má použiť csLaTeX alebo obyčajný LaTeX. Tiež podporuje dokumenty rozdelené do viacerých súborov: stačí do súborov dať komentár v tváre
%% master: názov_hlavného_súboru
a spracovávať sa bude hlavný súbor namiesto toho, ktorý skript dostal ako argument.
Dúfam, že tento skrípt bude pre niekoho užitočný.