#!/bin/sh

emul=0

do_diff() {
    diff --ignore-space-change -I '^%' -I '^file_name[(]' $1 $2 || \
	( echo "difference encountered: $1 <> $2"; exit 1 )
}


copy_files() {
    for i in $*; do
	\cp $i ${i}1
    done
}


rm_make() {
    rm -f $*
    [ "$emul" = 1 ] && mkflags='PL2WAM=pl2wam_emul'
#    [ "$emul" = 1 ] && echo CHECK IN EMULATED Mode with make $mkflags
    make $mkflags >/tmp/make.log 2>&1 || (echo /tmp/make.log ; exit 1)
    fix_wam $*
    #make $mkflags || exit 1
}


fix_wam() {
    OLD="^file_name('.*diaz/.*/\(src/[PB].*\.pl').\)"
    NEW="file_name('/home/diaz/GP/\1"

    for i in $*; do
	#echo "$i"
	tr -d '\r' <"$i" | sed "s!$OLD!$NEW!" >/tmp/"$i"
	cmp -s "$i" /tmp/"$i" || cp /tmp/"$i" "$i"
    done
}


verify_files() {
    for i in $*; do
#	echo checking file $i
	do_diff $i ${i}1 || exit 1
    done
}


do_all_bootstrap() {
    copy_files $* || exit 1
    rm_make $* || exit 1
    verify_files $* || exit 1
}


usage() {
    echo 'Usage check_boot -c [FILES]  save FILES .wam to .wam1'
    echo '      check_boot -m [FILES]  rm FILES .wam and make (rebuild)'
    echo '      check_boot -v [FILES]  verify FILES .wam vs .wam1'
    echo '      check_boot -a [FILES]  do all (copy, make, verify)'
    echo
    echo 'Pass -e as first argument to run pl2wam in emulated mode'
}


if [ "$1" = '-e' ]; then
   emul=1
   shift
fi
 
case "$1" in
    -c) shift; files=${*:-*.wam}; copy_files $files || exit 1;;
    -m) shift; files=${*:-*.wam}; rm_make $files || exit 1;;
    -v) shift; files=${*:-*.wam}; verify_files $files || exit 1;;
    -a) shift; files=${*:-*.wam}; do_all_bootstrap $files || exit 1;;
    *) usage; exit 1;;
esac


exit 0
