1#!/usr/bin/env bash
2#
3# Author: Markus Wenzel, TU Muenchen
4#
5# DESCRIPTION: install standalone Isabelle executables
6
7
8PRG=$(basename "$0")
9
10function usage()
11{
12  echo
13  echo "Usage: isabelle $PRG [OPTIONS] BINDIR"
14  echo
15  echo "  Options are:"
16  echo "    -d DISTDIR   refer to DISTDIR as Isabelle distribution"
17  echo "                 (default ISABELLE_HOME)"
18  echo
19  echo "  Install Isabelle executables with absolute references to the"
20  echo "  distribution directory."
21  echo
22  exit 1
23}
24
25function fail()
26{
27  echo "$1" >&2
28  exit 2
29}
30
31
32## process command line
33
34# options
35
36DISTDIR="$ISABELLE_HOME"
37BINDIR=""
38
39while getopts "d:" OPT
40do
41  case "$OPT" in
42    d)
43      DISTDIR="$OPTARG"
44      ;;
45    \?)
46      usage
47      ;;
48  esac
49done
50
51shift $(($OPTIND - 1))
52
53
54# args
55
56[ "$#" -ge 1 ] && { BINDIR="$1"; shift; }
57[ "$#" -ne 0 -o -z "$BINDIR" ] && usage
58
59
60## main
61
62echo "referring to distribution at \"$DISTDIR\""
63
64mkdir -p "$BINDIR" || fail "Bad directory: \"$BINDIR\""
65
66for NAME in isabelle isabelle_java isabelle_scala_script
67do
68  BIN="$BINDIR/$NAME"
69  DIST="$DISTDIR/bin/$NAME"
70  echo "installing $BIN"
71  rm -f "$BIN"
72  echo "#!/usr/bin/env bash" > "$BIN" || fail "Cannot write file: $BIN"
73  echo >> "$BIN"
74  echo "exec \"$DIST\" \"\$@\"" >> "$BIN"
75  chmod +x "$BIN"
76done
77