bin/isabelle
author wenzelm
Tue Aug 04 15:05:34 2009 +0200 (2009-08-04)
changeset 32322 45cb4a86eca2
parent 28934 801098c96f59
child 32390 468eff174a77
permissions -rwxr-xr-x
change IFS only locally -- thanks to bash arrays;
     1 #!/usr/bin/env bash
     2 #
     3 # Author: Markus Wenzel, TU Muenchen
     4 #
     5 # Isabelle tool wrapper.
     6 
     7 if [ -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")" "$@"
    10 fi
    11 
    12 
    13 ## settings
    14 
    15 PRG="$(basename "$0")"
    16 
    17 ISABELLE_HOME="$(cd "$(dirname "$0")"; cd "$(pwd -P)"; cd ..; pwd)"
    18 source "$ISABELLE_HOME/lib/scripts/getsettings" || exit 2
    19 
    20 ORIG_IFS="$IFS"; IFS=":"; declare -a TOOLS=($ISABELLE_TOOLS); IFS="$ORIG_IFS"
    21 
    22 
    23 ## diagnostics
    24 
    25 function usage()
    26 {
    27   echo
    28   echo "Usage: $PRG NAME [ARGS ...]"
    29   echo
    30   echo "  Start Isabelle tool NAME with ARGS; pass \"-?\" for tool specific help."
    31   echo
    32   echo "  Available tools are:"
    33   for DIR in ${TOOLS[@]}
    34   do
    35     if [ -d "$DIR" ]; then
    36       for TOOL in "$DIR"/*
    37       do
    38         if [ -f "$TOOL" -a -x "$TOOL" ]; then
    39           NAME="$(basename "$TOOL")"
    40           DESCRLINE="$(fgrep DESCRIPTION: "$TOOL" | sed -e 's/^.*DESCRIPTION: *//')"
    41           echo "    $NAME - $DESCRLINE"
    42         fi
    43       done
    44     fi
    45   done
    46   exit 1
    47 }
    48 
    49 function fail()
    50 {
    51   echo "$1" >&2
    52   exit 2
    53 }
    54 
    55 
    56 ## args
    57 
    58 [ "$#" -lt 1 -o "$1" = "-?" ] && usage
    59 
    60 TOOLNAME="$1"
    61 shift
    62 
    63 
    64 ## main
    65 
    66 for DIR in "${TOOLS[@]}"
    67 do
    68   TOOL="$DIR/$TOOLNAME"
    69   [ -f "$TOOL" -a -x "$TOOL" ] && exec "$TOOL" "$@"
    70 done
    71 
    72 fail "Unknown Isabelle tool: $TOOLNAME"