1#!/usr/bin/env bash
2#
3# Author: Makarius
4#
5# DESCRIPTION: Isabelle/jEdit client for already running application
6
7## settings
8
9SERVER_NAME="${ISABELLE_IDENTIFIER:-Isabelle}"
10
11eval "declare -a JAVA_ARGS=($JEDIT_JAVA_SYSTEM_OPTIONS $JEDIT_JAVA_OPTIONS)"
12
13
14## diagnostics
15
16PRG="$(basename "$0")"
17
18function usage()
19{
20  echo
21  echo "Usage: isabelle $PRG [OPTIONS] [FILES ...]"
22  echo
23  echo "  Options are:"
24  echo "    -c           only check presence of server"
25  echo "    -n           only report server name"
26  echo "    -s NAME      server name (default $SERVER_NAME)"
27  echo
28  echo "  Connect to already running Isabelle/jEdit instance and open FILES"
29  echo
30  exit 1
31}
32
33function fail()
34{
35  echo "$1" >&2
36  exit 2
37}
38
39function failed()
40{
41  fail "Failed!"
42}
43
44
45## process command line
46
47# options
48
49CHECK_ONLY="false"
50NAME_ONLY="false"
51
52while getopts "cns:" OPT
53do
54  case "$OPT" in
55    c)
56      CHECK_ONLY="true"
57      ;;
58    n)
59      NAME_ONLY="true"
60      ;;
61    s)
62      SERVER_NAME="$OPTARG"
63      ;;
64    \?)
65      usage
66      ;;
67  esac
68done
69
70shift $(($OPTIND - 1))
71
72
73# args
74
75declare -a ARGS=()
76
77while [ "$#" -gt 0 ]
78do
79  ARGS["${#ARGS[@]}"]="$(platform_path "$1")"
80  shift
81done
82
83
84## main
85
86if [ "$CHECK_ONLY" = true ]
87then
88  [ -f "$JEDIT_SETTINGS/$SERVER_NAME" ]
89  exit $?
90fi
91
92if [ "$NAME_ONLY" = true ]
93then
94  echo "$SERVER_NAME"
95  exit
96fi
97
98isabelle jedit -b || exit $?
99
100if [ -f "$JEDIT_SETTINGS/$SERVER_NAME" ]
101then
102  exec isabelle java "${JAVA_ARGS[@]}" \
103    -jar $(platform_path "$JEDIT_HOME/dist/jedit.jar") \
104    "-settings=$(platform_path "$JEDIT_SETTINGS")" \
105    -server="$SERVER_NAME" -reuseview "${ARGS[@]}"
106else
107  fail "Isabelle/jEdit server \"$SERVER_NAME\" not active"
108fi
109