#!/usr/bin/env bash
#
# Author: Markus Wenzel, TU Muenchen
#
# DESCRIPTION: install standalone Isabelle executables
PRG=$(basename "$0")
function usage()
{
echo
echo "Usage: isabelle $PRG [OPTIONS] BINDIR"
echo
echo " Options are:"
echo " -d DISTDIR refer to DISTDIR as Isabelle distribution"
echo " (default ISABELLE_HOME)"
echo
echo " Install Isabelle executables with absolute references to the"
echo " distribution directory."
echo
exit 1
}
function fail()
{
echo "$1" >&2
exit 2
}
## process command line
# options
DISTDIR="$ISABELLE_HOME"
BINDIR=""
while getopts "d:" OPT
do
case "$OPT" in
d)
DISTDIR="$OPTARG"
;;
\?)
usage
;;
esac
done
shift $(($OPTIND - 1))
# args
[ "$#" -ge 1 ] && { BINDIR="$1"; shift; }
[ "$#" -ne 0 -o -z "$BINDIR" ] && usage
## main
echo "referring to distribution at \"$DISTDIR\""
mkdir -p "$BINDIR" || fail "Bad directory: \"$BINDIR\""
for NAME in isabelle isabelle_java isabelle_scala_script
do
BIN="$BINDIR/$NAME"
DIST="$DISTDIR/bin/$NAME"
echo "installing $BIN"
rm -f "$BIN"
echo "#!/usr/bin/env bash" > "$BIN" || fail "Cannot write file: $BIN"
echo >> "$BIN"
echo "exec \"$DIST\" \"\$@\"" >> "$BIN"
chmod +x "$BIN"
done