#!/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 >&2 "### No line editor: \"$ISABELLE_LINE_EDITOR\""
exec isabelle server "${SERVER_OPTS[@]}"
fi