1#!/usr/bin/env bash
2#
3# Author: Makarius
4#
5# Isabelle/Java cold start -- without settings environment
6
7if [ -L "$0" ]; then
8  TARGET="$(LC_ALL=C ls -l "$0" | sed 's/.* -> //')"
9  exec "$(cd "$(dirname "$0")"; cd "$(pwd -P)"; cd "$(dirname "$TARGET")"; pwd)/$(basename "$TARGET")" "$@"
10fi
11
12export ISABELLE_HOME="$(cd "$(dirname "$0")"; cd "$(pwd -P)"; cd ..; pwd)"
13
14(
15  source "$ISABELLE_HOME/lib/scripts/getsettings" || exit 2
16
17  eval "declare -a JAVA_ARGS=($ISABELLE_JAVA_SYSTEM_OPTIONS $ISABELLE_TOOL_JAVA_OPTIONS)"
18
19  if [ -f "$ISABELLE_HOME/src/Tools/jEdit/dist/jedit.jar" ]; then
20    classpath "$ISABELLE_HOME/src/Tools/jEdit/dist/jedit.jar"
21  fi
22
23  [ -n "$CLASSPATH" ] && classpath "$CLASSPATH"
24
25  echo "$ISABELLE_ROOT"
26  echo "$CYGWIN_ROOT"
27  echo "$JAVA_HOME"
28  echo "$(platform_path "$ISABELLE_CLASSPATH")"
29  for ARG in "${JAVA_ARGS[@]}"; do echo "$ARG"; done
30) | {
31  LINE_COUNT=0
32  export ISABELLE_ROOT=""
33  export CYGWIN_ROOT=""
34  unset JAVA_HOME
35  unset ISABELLE_CLASSPATH
36  unset JAVA_ARGS; declare -a JAVA_ARGS
37
38  while { unset REPLY; read -r; test "$?" = 0 -o -n "$REPLY"; }
39  do
40    case "$LINE_COUNT" in
41      0)
42        LINE_COUNT=1
43        ISABELLE_ROOT="$REPLY"
44        ;;
45      1)
46        LINE_COUNT=2
47        CYGWIN_ROOT="$REPLY"
48        ;;
49      2)
50        LINE_COUNT=3
51        JAVA_HOME="$REPLY"
52        ;;
53      3)
54        LINE_COUNT=4
55        ISABELLE_CLASSPATH="$REPLY"
56        ;;
57      *)
58        JAVA_ARGS["${#JAVA_ARGS[@]}"]="$REPLY"
59        ;;
60    esac
61  done
62
63  if [ -z "$JAVA_HOME" ]; then
64    echo "Unknown JAVA_HOME -- Java unavailable" >&2
65    exit 127
66  else
67    unset ISABELLE_HOME
68    unset CLASSPATH
69    exec "$JAVA_HOME/bin/java" "${JAVA_ARGS[@]}" \
70      "-Djava.ext.dirs=$JAVA_HOME/lib/ext" \
71      -classpath "$ISABELLE_CLASSPATH" "$@"
72  fi
73}
74