#! /bin/sh
#
#	This script compiles all Deductio exercises on the server.
#	You don't need to run this under normal circumstances.
#
#	Type './dedcompile clean' if you want to clean up
#	earlier-compiled exercises before recompiling.
#

# base directory.
test=`dirname $0`
if [ -z "$test" ]; then WIMS_HOME=..; else WIMS_HOME=$test/..; fi
cd $WIMS_HOME
WIMS_HOME=`pwd`
module_dir=$WIMS_HOME/public_html/modules

cd $module_dir

candidates=`find [EHUGR]* -name proc -type l | sed 's!/proc$!!'`

srctotal=0
deftotal=0
for d in $candidates
do
 if [ ! -f $d/INDEX ] || [ ! -L $d/mkindex ] || [ ! -d $d/def ] || [ ! -d $d/src ]; then continue; fi
 srccnt=`ls $d/src/*.ded 2>/dev/null | grep -c '\.ded$'`
 if [ $srccnt -eq 0 ]; then continue; fi
 cd $d
 if [ "$1" = "clean" ]; then
  rm -f def/*.def 2>/dev/null
 fi
 ./mkindex &>/dev/null
 defcnt=`ls def/*.def 2>/dev/null | grep -c '\.def$'`
 if [ $defcnt -gt $srccnt ]; then defcnt=$srccnt; fi
 failcnt=$(($srccnt-$defcnt))
 srctotal=$(($srctotal+$srccnt))
 deftotal=$(($deftotal+$defcnt))
 if [ $failcnt -gt 0 ]; then
  echo $d: $srccnt sources, $defcnt compiled, $failcnt failure.
 else
  echo $d: $srccnt sources, OK.
 fi
 cd $module_dir
done

failtotal=$(($srctotal-$deftotal))
cat <<@

Total: $srctotal sources, $deftotal compiled.
Total failure: $failtotal

@

