#!/bin/sh -f
# -*- Mode: sh -*-
# File: $CVSROOT/IDEA-DEV/XIDDL/run-xiddl2ddl
# Info: $CVSROOT/IDEA-DEV/COPYRIGHT
#  CVS: $Id: run-xiddl2ddl,v 1.6 2005/12/30 22:48:48 rijsman Exp $

os=`uname -s`

if [ -z $1 ] || [ "$#" != 1 ] && [ "$#" != 2 ];
then
  echo " "
  echo "usage:"
  echo " "
  echo "     run-xiddl2ddl <file-name> [debug]"
  echo "  or"
  echo "     run-xiddl2ddl <file-name>.xiddl"
  echo " "
  exit -1
fi

if [ -e xml ]; then
  xslt_dir=xml
else
  xslt_dir=../../../IdeaCore/IdeaDDL/xml
fi

if [ ! -e $xslt_dir ]; then
  echo " "
  echo "can't find IdeaCore/IdeaDDL/xml directory!"
  echo " "
  exit -1
fi

if [ $os != 'Linux' ]
then
  echo "This script only supports Linux.  Write your own for $os."
  exit -1
fi

if [ -e $1 ]
then
  xiddl_file=$1
  base_name=`echo $1 | sed -e 's/.xiddl//g'`
else
  xiddl_file=$1.xiddl
  base_name=$1
fi

if [ ! -e $xiddl_file ]
then
  echo "xiddl file \"$xiddl_file\" not found!"
  exit -1
fi

# validate the assembled file

validator=xml/xiddlvalidator_sh

if [ ! -e $validator ]
then
  validator=xml/xiddlvalidator_st
fi

echo "[validating with $validator]"

if [ ! -e $validator ]
then
  echo " "
  echo "It appears that neither the shared nor static xiddlvalidator has"
  echo "been installed in IDEA-DEV/bin.  Try invoking 'make install' in"
  echo "IDEA-DEV/Modules/Xerces/Validator.  Bon chance!"
  echo " "
  exit -1
fi

if [ -e _$xiddl_file ]
then
  valid=`$validator _$xiddl_file`
else
  valid=`$validator $xiddl_file`
fi

if [ "$valid" != "xiddl file is valid" ]
then
  echo " "
  echo "$valid"
  echo " "
  exit -1
fi

echo "[$valid]"

if [ ! -e $xiddl_file.temp ]
then
  ./xml/build-xiddl $xiddl_file _$xiddl_file $xiddl_file.temp.errors
  rm _$xiddl_file
  mv _$xiddl_file.temp $xiddl_file.temp
fi

if [ "$2" = "" ]
then
  debug=0
else
  debug=1
fi

echo "[Processing $xiddl_file in `pwd`...]"

echo "  [running IDEA semantic tests (writing to $base_name.xiddl-tests)]"
if [ $debug = 1 ]
then
  xsltproc --param debug-level 1 \
           -o $base_name.xiddl-tests \
           $xslt_dir/xiddl-tests.xsl $xiddl_file.temp
else
  xsltproc -o $base_name.xiddl-tests $xslt_dir/xiddl-tests.xsl $xiddl_file.temp
fi

echo "  [running Europa specific tests (writing to $base_name.europa-tests)]"
if [ $debug = 1 ]
then
  xsltproc --param debug-level 1 \
            -o $base_name.europa-tests \
            $xslt_dir/europa-tests.xsl $xiddl_file.temp
else
  xsltproc -o $base_name.europa-tests $xslt_dir/europa-tests.xsl $xiddl_file.temp
fi

errors=`egrep "ERROR" $base_name.xiddl-tests $base_name.europa-tests \
        | wc | awk '{ print $1 }'`

egrep "WARNING|ERROR" $base_name.xiddl-tests
egrep "WARNING|ERROR" $base_name.europa-tests

if [ $errors -ne 0 ];
then
  echo " "
  echo "Errors found!  Cannot translate.  Exiting."
  echo " "
  exit -1
fi

if [ "$debug" = "0" ]
then
  # throw away the temp file with the file names and line numbers
  rm $xiddl_file.temp
fi

echo "  [running ddl transformation (writing to $base_name.ddl)]"
xsltproc -o $base_name.ddl $xslt_dir/xiddl2ddl.xsl $xiddl_file

exit 0

#  EOF
