#!/usr/bin/env bash
#
# Author: Makarius
#
# DESCRIPTION: replace obsolete theory header command


## diagnostics

PRG="$(basename "$0")"

function usage()
{
  echo
  echo "Usage: isabelle $PRG [FILES|DIRS...]"
  echo
  echo "  Options are:"
  echo "    -s COMMAND   alternative heading command (default 'section')"
  echo
  echo "  Recursively find .thy files and replace obsolete theory header commands"
  echo "  by 'section' (default), or 'chapter', 'subsection', 'subsubsection'."
  echo
  echo "  Old versions of files are preserved by appending \"~~\"."
  echo
  exit 1
}


## process command line

#options

SECTION="section"

while getopts "s:" OPT
do
  case "$OPT" in
    s)
      SECTION="$OPTARG"
      ;;
    \?)
      usage
      ;;
  esac
done

shift $(($OPTIND - 1))


# args

[ "$#" -eq 0 -o "$1" = "-?" ] && usage

SPECS="$@"; shift "$#"


## main

find $SPECS -name \*.thy -print0 | \
  xargs -0 "$ISABELLE_TOOL" java isabelle.Update_Header "$SECTION"
