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ý.
Pridaj komentár