wenzelm@10555: #!/usr/bin/env bash wenzelm@7793: # wenzelm@7793: # $Id$ wenzelm@9788: # Author: Markus Wenzel, TU Muenchen wenzelm@9788: # License: GPL (GNU GENERAL PUBLIC LICENSE) wenzelm@7793: # wenzelm@7793: # DESCRIPTION: prepare theory session document wenzelm@7793: wenzelm@7793: wenzelm@10511: PRG="$(basename "$0")" wenzelm@7793: wenzelm@7793: function usage() wenzelm@7793: { wenzelm@7793: echo wenzelm@7793: echo "Usage: $PRG [OPTIONS] [DIR]" wenzelm@7793: echo wenzelm@7793: echo " Options are:" wenzelm@8654: echo " -c cleanup -- be aggressive in removing old stuff" wenzelm@7866: echo " -o FORMAT specify output format: dvi (default), dvi.gz, ps," wenzelm@7866: echo " ps.gz, pdf" wenzelm@11581: echo " -v be verbose" wenzelm@7793: echo wenzelm@8211: echo " Prepare the theory session document in DIR (default 'document')" wenzelm@7857: echo " producing the specified output format." wenzelm@7793: echo wenzelm@7793: exit 1 wenzelm@7793: } wenzelm@7793: wenzelm@7793: function fail() wenzelm@7793: { wenzelm@7793: echo "$1" >&2 wenzelm@7793: exit 2 wenzelm@7793: } wenzelm@7793: wenzelm@7793: wenzelm@7793: ## process command line wenzelm@7793: wenzelm@7793: # options wenzelm@7793: wenzelm@8211: CLEAN="" wenzelm@7793: OUTFORMAT=dvi wenzelm@11581: VERBOSE="" wenzelm@7793: wenzelm@11581: while getopts "co:v" OPT wenzelm@7793: do wenzelm@7793: case "$OPT" in wenzelm@8211: c) wenzelm@8211: CLEAN=true wenzelm@8211: ;; wenzelm@7793: o) wenzelm@7793: OUTFORMAT="$OPTARG" wenzelm@7793: ;; wenzelm@11581: v) wenzelm@11581: VERBOSE=true wenzelm@11581: ;; wenzelm@7793: \?) wenzelm@7793: usage wenzelm@7793: ;; wenzelm@7793: esac wenzelm@7793: done wenzelm@7793: wenzelm@7793: shift $(($OPTIND - 1)) wenzelm@7793: wenzelm@7793: wenzelm@7793: # args wenzelm@7793: wenzelm@8211: DIR="document" wenzelm@9788: [ "$#" -ge 1 ] && { DIR="$1"; shift; } wenzelm@7793: wenzelm@9788: [ "$#" -ne 0 ] && usage wenzelm@7793: wenzelm@7793: wenzelm@7793: ## main wenzelm@7793: wenzelm@7814: # check format wenzelm@7814: wenzelm@7814: case "$OUTFORMAT" in wenzelm@7814: dvi | dvi.gz | ps | ps.gz | pdf) wenzelm@7814: ;; wenzelm@7814: *) wenzelm@7814: fail "Bad output format '$OUTFORMAT'" wenzelm@7814: ;; wenzelm@7814: esac wenzelm@7814: wenzelm@7814: wenzelm@7814: # prepare document wenzelm@7793: wenzelm@7814: function pre_latex () wenzelm@7814: { wenzelm@7814: local FMT="$1" wenzelm@8654: [ -n "$CLEAN" ] && rm -f *.aux *.out wenzelm@7814: if [ -f root.bib ] wenzelm@7814: then wenzelm@9788: "$ISATOOL" latex -o "$FMT" && \ wenzelm@9788: "$ISATOOL" latex -o bbl && \ wenzelm@9788: "$ISATOOL" latex -o "$FMT" wenzelm@7814: else wenzelm@9788: "$ISATOOL" latex -o "$FMT" wenzelm@7814: fi wenzelm@7814: } wenzelm@7814: wenzelm@8211: ( wenzelm@8211: cd "$DIR" || fail "Bad directory '$DIR'" wenzelm@8211: wenzelm@8654: [ -n "$CLEAN" ] && rm -f "../document.$OUTFORMAT" wenzelm@8654: wenzelm@8211: if [ -f IsaMakefile ]; then wenzelm@9788: "$ISATOOL" make "$OUTFORMAT" wenzelm@9788: RC="$?" wenzelm@8211: elif [ "$OUTFORMAT" = pdf ]; then wenzelm@8211: pre_latex pdf && \ wenzelm@9788: "$ISATOOL" latex -o pdf && \ wenzelm@8211: { if [ -n "$ISABELLE_THUMBPDF" ]; then wenzelm@9788: "$ISATOOL" latex -o png && \ wenzelm@9788: "$ISATOOL" latex -o pdf wenzelm@8211: fi; } wenzelm@9788: RC="$?" wenzelm@8211: else wenzelm@8211: pre_latex dvi && \ wenzelm@9788: "$ISATOOL" latex -o "$OUTFORMAT" wenzelm@9788: RC="$?" wenzelm@8211: fi wenzelm@8211: wenzelm@11581: if [ "$RC" -eq 0 -a -f "root.$OUTFORMAT" ]; then wenzelm@11581: cp -f "root.$OUTFORMAT" "../document.$OUTFORMAT" && \ wenzelm@11581: [ -n "$VERBOSE" ] && echo "$(cd ..; echo "Prepared $PWD/document.$OUTFORMAT")" >&2 wenzelm@11581: fi wenzelm@8211: wenzelm@8217: exit "$RC" wenzelm@8211: ) wenzelm@9788: RC="$?" wenzelm@7793: wenzelm@7793: wenzelm@7814: # install wenzelm@7793: wenzelm@8211: [ "$RC" -ne 0 ] && fail "Failed to prepare document in directory '$DIR'" wenzelm@8211: wenzelm@8211: #beware! wenzelm@8211: [ -n "$CLEAN" ] && rm -rf "$DIR" wenzelm@8211: wenzelm@8211: exit "$RC"