lib/Tools/document
author wenzelm
Mon, 15 Oct 2001 20:35:10 +0200
changeset 11781 a08b62908caa
parent 11581 d7bb261e3a3b
child 11844 eb072fd9a45a
permissions -rwxr-xr-x
Tactic.rewrite_cterm;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
10555
2323ec838401 /usr/bin/env bash;
wenzelm
parents: 10511
diff changeset
     1
#!/usr/bin/env bash
7793
e0676a932348 prepare theory session document;
wenzelm
parents:
diff changeset
     2
#
e0676a932348 prepare theory session document;
wenzelm
parents:
diff changeset
     3
# $Id$
9788
wenzelm
parents: 8654
diff changeset
     4
# Author: Markus Wenzel, TU Muenchen
wenzelm
parents: 8654
diff changeset
     5
# License: GPL (GNU GENERAL PUBLIC LICENSE)
7793
e0676a932348 prepare theory session document;
wenzelm
parents:
diff changeset
     6
#
e0676a932348 prepare theory session document;
wenzelm
parents:
diff changeset
     7
# DESCRIPTION: prepare theory session document
e0676a932348 prepare theory session document;
wenzelm
parents:
diff changeset
     8
e0676a932348 prepare theory session document;
wenzelm
parents:
diff changeset
     9
10511
wenzelm
parents: 9788
diff changeset
    10
PRG="$(basename "$0")"
7793
e0676a932348 prepare theory session document;
wenzelm
parents:
diff changeset
    11
e0676a932348 prepare theory session document;
wenzelm
parents:
diff changeset
    12
function usage()
e0676a932348 prepare theory session document;
wenzelm
parents:
diff changeset
    13
{
e0676a932348 prepare theory session document;
wenzelm
parents:
diff changeset
    14
  echo
e0676a932348 prepare theory session document;
wenzelm
parents:
diff changeset
    15
  echo "Usage: $PRG [OPTIONS] [DIR]"
e0676a932348 prepare theory session document;
wenzelm
parents:
diff changeset
    16
  echo
e0676a932348 prepare theory session document;
wenzelm
parents:
diff changeset
    17
  echo "  Options are:"
8654
38ce936acb99 tuned -c option;
wenzelm
parents: 8269
diff changeset
    18
  echo "    -c           cleanup -- be aggressive in removing old stuff"
7866
3ccaa11b6df9 pdf: generate thumbnails if ISABELLE_THUMBPDF set;
wenzelm
parents: 7857
diff changeset
    19
  echo "    -o FORMAT    specify output format: dvi (default), dvi.gz, ps,"
3ccaa11b6df9 pdf: generate thumbnails if ISABELLE_THUMBPDF set;
wenzelm
parents: 7857
diff changeset
    20
  echo "                 ps.gz, pdf"
11581
d7bb261e3a3b -v option;
wenzelm
parents: 10555
diff changeset
    21
  echo "    -v           be verbose"
7793
e0676a932348 prepare theory session document;
wenzelm
parents:
diff changeset
    22
  echo
8211
714f164f0385 rename -p to -P;
wenzelm
parents: 8171
diff changeset
    23
  echo "  Prepare the theory session document in DIR (default 'document')"
7857
a49a3978fe3a tuned usage;
wenzelm
parents: 7814
diff changeset
    24
  echo "  producing the specified output format."
7793
e0676a932348 prepare theory session document;
wenzelm
parents:
diff changeset
    25
  echo
e0676a932348 prepare theory session document;
wenzelm
parents:
diff changeset
    26
  exit 1
e0676a932348 prepare theory session document;
wenzelm
parents:
diff changeset
    27
}
e0676a932348 prepare theory session document;
wenzelm
parents:
diff changeset
    28
e0676a932348 prepare theory session document;
wenzelm
parents:
diff changeset
    29
function fail()
e0676a932348 prepare theory session document;
wenzelm
parents:
diff changeset
    30
{
e0676a932348 prepare theory session document;
wenzelm
parents:
diff changeset
    31
  echo "$1" >&2
e0676a932348 prepare theory session document;
wenzelm
parents:
diff changeset
    32
  exit 2
e0676a932348 prepare theory session document;
wenzelm
parents:
diff changeset
    33
}
e0676a932348 prepare theory session document;
wenzelm
parents:
diff changeset
    34
e0676a932348 prepare theory session document;
wenzelm
parents:
diff changeset
    35
e0676a932348 prepare theory session document;
wenzelm
parents:
diff changeset
    36
## process command line
e0676a932348 prepare theory session document;
wenzelm
parents:
diff changeset
    37
e0676a932348 prepare theory session document;
wenzelm
parents:
diff changeset
    38
# options
e0676a932348 prepare theory session document;
wenzelm
parents:
diff changeset
    39
8211
714f164f0385 rename -p to -P;
wenzelm
parents: 8171
diff changeset
    40
CLEAN=""
7793
e0676a932348 prepare theory session document;
wenzelm
parents:
diff changeset
    41
OUTFORMAT=dvi
11581
d7bb261e3a3b -v option;
wenzelm
parents: 10555
diff changeset
    42
VERBOSE=""
7793
e0676a932348 prepare theory session document;
wenzelm
parents:
diff changeset
    43
11581
d7bb261e3a3b -v option;
wenzelm
parents: 10555
diff changeset
    44
while getopts "co:v" OPT
7793
e0676a932348 prepare theory session document;
wenzelm
parents:
diff changeset
    45
do
e0676a932348 prepare theory session document;
wenzelm
parents:
diff changeset
    46
  case "$OPT" in
8211
714f164f0385 rename -p to -P;
wenzelm
parents: 8171
diff changeset
    47
    c)
714f164f0385 rename -p to -P;
wenzelm
parents: 8171
diff changeset
    48
      CLEAN=true
714f164f0385 rename -p to -P;
wenzelm
parents: 8171
diff changeset
    49
      ;;
7793
e0676a932348 prepare theory session document;
wenzelm
parents:
diff changeset
    50
    o)
e0676a932348 prepare theory session document;
wenzelm
parents:
diff changeset
    51
      OUTFORMAT="$OPTARG"
e0676a932348 prepare theory session document;
wenzelm
parents:
diff changeset
    52
      ;;
11581
d7bb261e3a3b -v option;
wenzelm
parents: 10555
diff changeset
    53
    v)
d7bb261e3a3b -v option;
wenzelm
parents: 10555
diff changeset
    54
      VERBOSE=true
d7bb261e3a3b -v option;
wenzelm
parents: 10555
diff changeset
    55
      ;;
7793
e0676a932348 prepare theory session document;
wenzelm
parents:
diff changeset
    56
    \?)
e0676a932348 prepare theory session document;
wenzelm
parents:
diff changeset
    57
      usage
e0676a932348 prepare theory session document;
wenzelm
parents:
diff changeset
    58
      ;;
e0676a932348 prepare theory session document;
wenzelm
parents:
diff changeset
    59
  esac
e0676a932348 prepare theory session document;
wenzelm
parents:
diff changeset
    60
done
e0676a932348 prepare theory session document;
wenzelm
parents:
diff changeset
    61
e0676a932348 prepare theory session document;
wenzelm
parents:
diff changeset
    62
shift $(($OPTIND - 1))
e0676a932348 prepare theory session document;
wenzelm
parents:
diff changeset
    63
e0676a932348 prepare theory session document;
wenzelm
parents:
diff changeset
    64
e0676a932348 prepare theory session document;
wenzelm
parents:
diff changeset
    65
# args
e0676a932348 prepare theory session document;
wenzelm
parents:
diff changeset
    66
8211
714f164f0385 rename -p to -P;
wenzelm
parents: 8171
diff changeset
    67
DIR="document"
9788
wenzelm
parents: 8654
diff changeset
    68
[ "$#" -ge 1 ] && { DIR="$1"; shift; }
7793
e0676a932348 prepare theory session document;
wenzelm
parents:
diff changeset
    69
9788
wenzelm
parents: 8654
diff changeset
    70
[ "$#" -ne 0 ] && usage
7793
e0676a932348 prepare theory session document;
wenzelm
parents:
diff changeset
    71
e0676a932348 prepare theory session document;
wenzelm
parents:
diff changeset
    72
e0676a932348 prepare theory session document;
wenzelm
parents:
diff changeset
    73
## main
e0676a932348 prepare theory session document;
wenzelm
parents:
diff changeset
    74
7814
ef6d84f16592 check format;
wenzelm
parents: 7793
diff changeset
    75
# check format
ef6d84f16592 check format;
wenzelm
parents: 7793
diff changeset
    76
ef6d84f16592 check format;
wenzelm
parents: 7793
diff changeset
    77
case "$OUTFORMAT" in
ef6d84f16592 check format;
wenzelm
parents: 7793
diff changeset
    78
  dvi | dvi.gz | ps | ps.gz | pdf)
ef6d84f16592 check format;
wenzelm
parents: 7793
diff changeset
    79
    ;;
ef6d84f16592 check format;
wenzelm
parents: 7793
diff changeset
    80
  *)
ef6d84f16592 check format;
wenzelm
parents: 7793
diff changeset
    81
    fail "Bad output format '$OUTFORMAT'"
ef6d84f16592 check format;
wenzelm
parents: 7793
diff changeset
    82
    ;;
ef6d84f16592 check format;
wenzelm
parents: 7793
diff changeset
    83
esac
ef6d84f16592 check format;
wenzelm
parents: 7793
diff changeset
    84
ef6d84f16592 check format;
wenzelm
parents: 7793
diff changeset
    85
ef6d84f16592 check format;
wenzelm
parents: 7793
diff changeset
    86
# prepare document
7793
e0676a932348 prepare theory session document;
wenzelm
parents:
diff changeset
    87
7814
ef6d84f16592 check format;
wenzelm
parents: 7793
diff changeset
    88
function pre_latex ()
ef6d84f16592 check format;
wenzelm
parents: 7793
diff changeset
    89
{
ef6d84f16592 check format;
wenzelm
parents: 7793
diff changeset
    90
  local FMT="$1"
8654
38ce936acb99 tuned -c option;
wenzelm
parents: 8269
diff changeset
    91
  [ -n "$CLEAN" ] && rm -f *.aux *.out
7814
ef6d84f16592 check format;
wenzelm
parents: 7793
diff changeset
    92
  if [ -f root.bib ]
ef6d84f16592 check format;
wenzelm
parents: 7793
diff changeset
    93
  then
9788
wenzelm
parents: 8654
diff changeset
    94
    "$ISATOOL" latex -o "$FMT" && \
wenzelm
parents: 8654
diff changeset
    95
    "$ISATOOL" latex -o bbl && \
wenzelm
parents: 8654
diff changeset
    96
    "$ISATOOL" latex -o "$FMT"
7814
ef6d84f16592 check format;
wenzelm
parents: 7793
diff changeset
    97
  else
9788
wenzelm
parents: 8654
diff changeset
    98
    "$ISATOOL" latex -o "$FMT"
7814
ef6d84f16592 check format;
wenzelm
parents: 7793
diff changeset
    99
  fi
ef6d84f16592 check format;
wenzelm
parents: 7793
diff changeset
   100
}
ef6d84f16592 check format;
wenzelm
parents: 7793
diff changeset
   101
8211
714f164f0385 rename -p to -P;
wenzelm
parents: 8171
diff changeset
   102
(
714f164f0385 rename -p to -P;
wenzelm
parents: 8171
diff changeset
   103
  cd "$DIR" || fail "Bad directory '$DIR'"
714f164f0385 rename -p to -P;
wenzelm
parents: 8171
diff changeset
   104
8654
38ce936acb99 tuned -c option;
wenzelm
parents: 8269
diff changeset
   105
  [ -n "$CLEAN" ] && rm -f "../document.$OUTFORMAT"
38ce936acb99 tuned -c option;
wenzelm
parents: 8269
diff changeset
   106
8211
714f164f0385 rename -p to -P;
wenzelm
parents: 8171
diff changeset
   107
  if [ -f IsaMakefile ]; then
9788
wenzelm
parents: 8654
diff changeset
   108
    "$ISATOOL" make "$OUTFORMAT"
wenzelm
parents: 8654
diff changeset
   109
    RC="$?"
8211
714f164f0385 rename -p to -P;
wenzelm
parents: 8171
diff changeset
   110
  elif [ "$OUTFORMAT" = pdf ]; then
714f164f0385 rename -p to -P;
wenzelm
parents: 8171
diff changeset
   111
    pre_latex pdf && \
9788
wenzelm
parents: 8654
diff changeset
   112
    "$ISATOOL" latex -o pdf && \
8211
714f164f0385 rename -p to -P;
wenzelm
parents: 8171
diff changeset
   113
    { if [ -n "$ISABELLE_THUMBPDF" ]; then
9788
wenzelm
parents: 8654
diff changeset
   114
        "$ISATOOL" latex -o png && \
wenzelm
parents: 8654
diff changeset
   115
        "$ISATOOL" latex -o pdf
8211
714f164f0385 rename -p to -P;
wenzelm
parents: 8171
diff changeset
   116
      fi; }
9788
wenzelm
parents: 8654
diff changeset
   117
    RC="$?"
8211
714f164f0385 rename -p to -P;
wenzelm
parents: 8171
diff changeset
   118
  else
714f164f0385 rename -p to -P;
wenzelm
parents: 8171
diff changeset
   119
    pre_latex dvi && \
9788
wenzelm
parents: 8654
diff changeset
   120
    "$ISATOOL" latex -o "$OUTFORMAT"
wenzelm
parents: 8654
diff changeset
   121
    RC="$?"
8211
714f164f0385 rename -p to -P;
wenzelm
parents: 8171
diff changeset
   122
  fi
714f164f0385 rename -p to -P;
wenzelm
parents: 8171
diff changeset
   123
11581
d7bb261e3a3b -v option;
wenzelm
parents: 10555
diff changeset
   124
  if [ "$RC" -eq 0 -a -f "root.$OUTFORMAT" ]; then
d7bb261e3a3b -v option;
wenzelm
parents: 10555
diff changeset
   125
    cp -f "root.$OUTFORMAT" "../document.$OUTFORMAT" && \
d7bb261e3a3b -v option;
wenzelm
parents: 10555
diff changeset
   126
    [ -n "$VERBOSE" ] && echo "$(cd ..; echo "Prepared $PWD/document.$OUTFORMAT")" >&2
d7bb261e3a3b -v option;
wenzelm
parents: 10555
diff changeset
   127
  fi
8211
714f164f0385 rename -p to -P;
wenzelm
parents: 8171
diff changeset
   128
8217
dc3b8cdbb816 option -c;
wenzelm
parents: 8212
diff changeset
   129
  exit "$RC"
8211
714f164f0385 rename -p to -P;
wenzelm
parents: 8171
diff changeset
   130
)
9788
wenzelm
parents: 8654
diff changeset
   131
RC="$?"
7793
e0676a932348 prepare theory session document;
wenzelm
parents:
diff changeset
   132
e0676a932348 prepare theory session document;
wenzelm
parents:
diff changeset
   133
7814
ef6d84f16592 check format;
wenzelm
parents: 7793
diff changeset
   134
# install
7793
e0676a932348 prepare theory session document;
wenzelm
parents:
diff changeset
   135
8211
714f164f0385 rename -p to -P;
wenzelm
parents: 8171
diff changeset
   136
[ "$RC" -ne 0 ] && fail "Failed to prepare document in directory '$DIR'"
714f164f0385 rename -p to -P;
wenzelm
parents: 8171
diff changeset
   137
714f164f0385 rename -p to -P;
wenzelm
parents: 8171
diff changeset
   138
#beware!
714f164f0385 rename -p to -P;
wenzelm
parents: 8171
diff changeset
   139
[ -n "$CLEAN" ] && rm -rf "$DIR"
714f164f0385 rename -p to -P;
wenzelm
parents: 8171
diff changeset
   140
714f164f0385 rename -p to -P;
wenzelm
parents: 8171
diff changeset
   141
exit "$RC"