#!/usr/bin/env bash
#
# Author: Makarius
#
# DESCRIPTION: console interaction for Isabelle servers (with line-editor)
PRG="$(basename "$0")"
function usage()
{
  echo
  echo "Usage: isabelle $PRG [OPTIONS]"
  echo
  echo "  Options are:"
  echo "    -n NAME      explicit server name"
  echo "    -p PORT      explicit server port"
  echo
  echo "  Console interaction for Isabelle servers (with line-editor)."
  echo
  exit 1
}
function fail()
{
  echo "$1" >&2
  exit 2
}
## process command line
# options
declare -a SERVER_OPTS=(-s -c)
while getopts "n:p:" OPT
do
  case "$OPT" in
    n)
      SERVER_OPTS["${#SERVER_OPTS[@]}"]="-n"
      SERVER_OPTS["${#SERVER_OPTS[@]}"]="$OPTARG"
      ;;
    p)
      SERVER_OPTS["${#SERVER_OPTS[@]}"]="-p"
      SERVER_OPTS["${#SERVER_OPTS[@]}"]="$OPTARG"
      ;;
    \?)
      usage
      ;;
  esac
done
shift $(($OPTIND - 1))
# args
[ "$#" -ne 0 ] && usage
# main
if type -p "$ISABELLE_LINE_EDITOR" > /dev/null
then
  exec "$ISABELLE_LINE_EDITOR" isabelle server "${SERVER_OPTS[@]}"
else
  echo "### No line editor: \"$ISABELLE_LINE_EDITOR\""
  exec isabelle server "${SERVER_OPTS[@]}"
fi