#/usr/bin/env bash # Copyright (c) 2019 University of Exeter # 2018-2019 University of Paris-Saclay # 2018-2019 The University of Sheffield # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in # the documentation and/or other materials provided with the # distribution. # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. # # SPDX-License-Identifier: BSD-2-Clause # # DESCRIPTION: prepare session root directory with DOF setup ## diagnostics PRG="$(basename "$0")" function usage() { echo echo "Usage: isabelle $PRG [OPTIONS] [DIR]" echo echo " Options are:" echo " -h print this help text and exit" echo " -n NAME alternative session name (default: DIR base name)" echo " -o ONTOLOGY (default: $DEFAULT_ONTOLOGY)" echo " Available ontologies:" for t in "$ISABELLE_HOME_USER/DOF/latex/"*.sty; do if [[ $t =~ DOF-(.*).sty$ ]]; then echo " * ${BASH_REMATCH[1]}" fi done echo " -t TEMPLATE (default: $DEFAULT_TEMPLATE)" echo " Available document templates:" for t in "$ISABELLE_HOME_USER/DOF/document-template/"*.tex; do if [[ $t =~ root-(.*).tex$ ]]; then echo " * ${BASH_REMATCH[1]}" fi done echo echo " Prepare session root DIR (default: current directory)." echo exit 1 } function fail() { echo "$1" >&2 exit 2 } ## process command line # options NAME="" DEFAULT_TEMPLATE="scrreprt" DEFAULT_ONTOLOGY="core" TEMPLATE="$DEFAULT_TEMPLATE" ONTOLOGY="$DEFAULT_ONTOLOGY" while getopts "t:o:n:dh" OPT do case "$OPT" in h) usage exit 1 ;; n) NAME="$OPTARG" ;; o) if [ ! -f "$ISABELLE_HOME_USER/DOF/latex/DOF-$OPTARG.sty" ]; then echo "ERROR: Ontology $OPTARG not available!" exit 1 fi ONTOLOGY="$ONTOLOGY $OPTARG" ;; t) TEMPLATE="$OPTARG" if [ ! -f "$ISABELLE_HOME_USER/DOF/document-template/root-$TEMPLATE.tex" ]; then echo "ERROR: Template $TEMPLATE not available!" exit 1 fi ;; \?) usage exit 0 ;; esac done shift $(($OPTIND - 1)) # args if [ "$#" -eq 0 ]; then DIR="." elif [ "$#" -eq 1 ]; then DIR="$1" shift else usage fi if [ -z "$NAME" ]; then NAME="$DIR" fi $ISABELLE_TOOL mkroot -n "$NAME" "$DIR" echo " \"preamble.tex\"" >> "$DIR"/ROOT echo " \"build\"" >> "$DIR"/ROOT sed -i -e "s/root.tex/isadof.cfg/" "$DIR"/ROOT sed -i -e "s/HOL/Isabelle_DOF/" "$DIR"/ROOT rm -f "$DIR"/document/root.tex # Creating isadof.cfg echo "Template: $TEMPLATE" > "$DIR"/document/isadof.cfg cp "$ISABELLE_HOME_USER/DOF/document-template/build" "$DIR"/document/ for o in $ONTOLOGY; do echo "Ontology: $o" >> "$DIR"/document/isadof.cfg; done # Creating praemble.tex TITLE=$(echo "$NAME" | tr _ - | tr -d '\\') AUTHOR=$(echo "By $USER" | tr _ - | tr -d '\\') echo "%% This is a placeholder for user-specific configuration and packages." >> "$DIR"/document/preamble.tex echo "\\title{$TITLE}{}{}{}{}{}{}" >> "$DIR"/document/preamble.tex echo "\\author{$AUTHOR}{}{}{}{}{}" >> "$DIR"/document/preamble.tex