1#!/usr/bin/env bash 2# 3# Author: Markus Wenzel, TU Muenchen 4# 5# DESCRIPTION: Isabelle graph browser 6 7 8PRG="$(basename "$0")" 9 10function usage() 11{ 12 echo 13 echo "Usage: isabelle $PRG [OPTIONS] [GRAPHFILE]" 14 echo 15 echo " Options are:" 16 echo " -b Admin/build only" 17 echo " -c cleanup -- remove GRAPHFILE after use" 18 echo " -o FILE output to FILE (ps, eps, pdf)" 19 echo 20 exit 1 21} 22 23function fail() 24{ 25 echo "$1" >&2 26 exit 2 27} 28 29 30## process command line 31 32# options 33 34ADMIN_BUILD="" 35CLEAN="" 36OUTFILE="" 37 38while getopts "bco:" OPT 39do 40 case "$OPT" in 41 b) 42 ADMIN_BUILD=true 43 ;; 44 c) 45 CLEAN=true 46 ;; 47 o) 48 OUTFILE="$OPTARG" 49 ;; 50 \?) 51 usage 52 ;; 53 esac 54done 55 56shift $(($OPTIND - 1)) 57 58 59# args 60 61GRAPHFILE="" 62[ "$#" -gt 0 ] && { GRAPHFILE="$1"; shift; } 63[ "$#" -ne 0 ] && usage 64 65 66## main 67 68isabelle_admin_build browser || exit $? 69 70classpath "$ISABELLE_HOME/lib/browser/GraphBrowser.jar" 71 72if [ -n "$GRAPHFILE" ]; then 73 PRIVATE_FILE="${ISABELLE_TMP:-${TMPDIR:-/tmp}}/$$"$(basename "$GRAPHFILE") 74 if [ -n "$CLEAN" ]; then 75 mv -f "$GRAPHFILE" "$PRIVATE_FILE" || fail "Cannot move file: $GRAPHFILE" 76 else 77 cp -f "$GRAPHFILE" "$PRIVATE_FILE" || fail "Cannot copy file: $GRAPHFILE" 78 fi 79 80 PDF="" 81 case "$OUTFILE" in 82 *.pdf) 83 OUTFILE="${OUTFILE%%.pdf}.eps" 84 PDF=true 85 ;; 86 esac 87 88 if [ -z "$OUTFILE" ]; then 89 isabelle java GraphBrowser.GraphBrowser "$(platform_path "$PRIVATE_FILE")" 90 else 91 isabelle java GraphBrowser.Console "$(platform_path "$PRIVATE_FILE")" "$(platform_path "$OUTFILE")" 92 fi 93 RC="$?" 94 95 if [ -n "$PDF" ]; then 96 ( 97 cd "$(dirname "$OUTFILE")" 98 "$ISABELLE_EPSTOPDF" "$(basename "$OUTFILE")" || fail "Failed to produce pdf output" 99 ) 100 fi 101 102 rm -f "$PRIVATE_FILE" 103elif [ -z "$ADMIN_BUILD" ]; then 104 [ -d "$ISABELLE_BROWSER_INFO" ] && cd "$ISABELLE_BROWSER_INFO" 105 exec isabelle java GraphBrowser.GraphBrowser 106else 107 RC=0 108fi 109 110exit "$RC" 111