lib/Tools/mkdir
author wenzelm
Sat, 05 Feb 2000 16:59:50 +0100
changeset 8198 73a5877ca517
parent 8194 0c5d9d23b715
child 8199 9e45cf2e6cf7
permissions -rwxr-xr-x
-I option;

#!/bin/bash
#
# $Id$
#
# DESCRIPTION: prepare logic session directory


## diagnostics

PRG=$(basename $0)

function usage()
{
  echo
  echo "Usage: $PRG [LOGIC] NAME"
  echo
  echo "  Options are:"
  echo "    -I FILE      alternative IsaMakefile output"
  echo "    -b           setup build mode (session outputs heap image)"
  echo "    -d           setup document"
  echo "    -p           include parent logic target"
  echo
  echo "  Prepare session directory, including IsaMakefile, document etc."
  echo "  with parent LOGIC (default \$ISABELLE_LOGIC=$ISABELLE_LOGIC)"
  echo
  exit 1
}

function fail()
{
  echo "$1" >&2
  exit 2
}


## process command line

# options

ISAMAKEFILE="IsaMakefile"
BUILD=""
DOCUMENT=""
PARENT=""

while getopts "I:bdp" OPT
do
  case "$OPT" in
    I)
      ISAMAKEFILE="$OPTARG"
      ;;
    b)
      BUILD=true
      ;;
    d)
      DOCUMENT=true
      ;;
    p)
      PARENT=true
      ;;
    \?)
      usage
      ;;
  esac
done

shift $(($OPTIND - 1))


# args


if [ $# -eq 1 ]; then
  LOGIC="$ISABELLE_LOGIC"
  NAME="$1"; shift
elif [ $# -eq 2 ]; then
  LOGIC="$1"; shift
  NAME="$1"; shift
else
  usage
fi

[ -z "$SESSION" ] && SESSION=$(basename $NAME)



## main

# IsaMakefile

if [ -n "$BUILD" ]; then
  IMAGES="$NAME"
  TEST=""
  TARGET="\$(OUT)/$NAME"
  USEDIR="\$(USEDIR) -b -P http://isabelle.in.tum.de/library"
else
  IMAGES=""
  TEST="$NAME"
  TARGET="\$(LOG)/$NAME.gz"
  USEDIR="\$(USEDIR)"
fi

if [ "$ISAMAKEFILE" != - -a -f "$ISAMAKEFILE" ]; then
  echo "keeping $PWD/$ISAMAKEFILE" >&2
else
  { echo
    echo "## targets"
    echo
    echo "default: $NAME"
    echo "images: $IMAGES"
    echo "test: $TEST"
    echo
    echo "all: images test"
    echo
    echo
    echo "## global settings"
    echo
    echo "SRC = \$(ISABELLE_HOME)/src"
    echo "OUT = \$(ISABELLE_OUTPUT)"
    echo "LOG = \$(OUT)/log"
    echo "USEDIR = \$(ISATOOL) usedir -i true -d dvi"
    echo
    echo
    echo "## $NAME"
    echo ""
    if [ -n "$PARENT" ]; then
      echo "$NAME: $LOGIC $TARGET"
      echo
      echo "$LOGIC:"
      echo -e "\t@cd \$(SRC)/$LOGIC; \$(ISATOOL) make $LOGIC"
      echo
      echo "$TARGET: \$(OUT)/$LOGIC     ## add $NAME sources here"
      echo -e "\t@$USEDIR \$(OUT)/$LOGIC $NAME"
    else
      echo "$NAME: $TARGET"
      echo
      echo "$TARGET:                    ## add $NAME sources here"
      echo -e "\t@$USEDIR $LOGIC $NAME"
    fi
    echo
    echo
    echo "## clean"
    echo
    echo "clean:"
    echo -e "\t@rm -f $TARGET"
    echo
  } | {
    if [ -z "$ISAMAKEFILE" -o "$ISAMAKEFILE" = - ]; then
      cat
    else
      cat > "$ISAMAKEFILE"
    fi
  }
fi


# base directory

if [ -z "$BUILD" ]; then
  mkdir -p "$NAME" || fail "Bad directory: $PWD/$NAME"
  cd "$NAME"
fi

if [ -f ROOT.ML ]; then
  echo "keeping $PWD/ROOT.ML" >&2
else
  echo -e "\n(* use_thy \"YourTheory\"; *)\n" >ROOT.ML
fi


# document directory

if [ -n "$DOCUMENT" ]; then
  if [ -e document ]; then
    echo "keeping $PWD/document" >&2
  else
    mkdir document || fail "Bad directory: $PWD/document"
    cat >document/root.tex <<EOF

\documentclass[11pt,a4paper]{article}
\usepackage{isabelle,isabellesym,pdfsetup}

\begin{document}
\input{session}
\end{document}

EOF
  fi
fi