#! /bin/sh

# ----- Global paremeters

COSTSH=costsh
NSGMLS="nsgmls -E 100000"

# ----- Environment dependent stuff

# This echo should obey -n
if [ "`uname`" = "SunOS" ]; then
    ECHO=/usr/ucb/echo
else
    ECHO=/bin/echo
fi

if [ "$USER" = "" ]; then
    if [ "$LOGNAME" != "" ]; then
	USER=$LOGNAME
    else
	USER=nobody
    fi
    export USER
fi

if [ -z "$SGML_HOME" ]; then
    SGML_HOME=${HOME}/lib/TEItools
fi

SITE_PATH=${SGML_HOME}/site

BACKEND=`echo $0 | cut -d2 -f2`
DTD=`basename $0 | cut -d2 -f1`

if [ -z "$BACKEND" -o -z "$DTD" ]; then
  echo 'This script should be named <dtd>2<something>'
  exit 1
fi

FRONTEND=${SGML_HOME}/${DTD}
SCRIPT_HOME=${FRONTEND}/${BACKEND}; export SCRIPT_HOME
SGML_SEARCH_PATH=.:${SITE_PATH}/dtd:${SITE_PATH}/${DTD}/${BACKEND}:${SGML_HOME}/dtd:${FRONTEND}/${BACKEND}
export SGML_SEARCH_PATH

if [ "${BACKEND}" != "esis" ]; then
    SCRIPT_DIR=${SITE_PATH}/${DTD}/${BACKEND}
    SCRIPT=${SCRIPT_DIR}/script
    if [ ! -r ${SCRIPT} ]; then
	OLD_SCRIPT=${SCRIPT}
	SCRIPT_DIR=${SGML_HOME}/${DTD}/${BACKEND}
	SCRIPT=${SCRIPT_DIR}/script
	if [ ! -r ${SCRIPT} ]; then
	echo "Cannot find script for ${DTD}-to-${BACKEND} conversion"
	echo "Tried ${OLD_SCRIPT} and ${SCRIPT}."
	exit 1
    fi
  fi
fi

SGML_CATALOG_FILES=catalog:CATALOG:${SITE_PATH}/dtd/catalog:${SGML_HOME}/dtd/catalog
export SGML_CATALOG_FILES
COSTLIB=${SGML_HOME}/cost; export COSTLIB
COSTPATH=${SGML_HOME}/lib:${SGML_SEARCH_PATH}; export COSTPATH

if [ $# -eq 0 ]; then
  echo "Usage: `basename $0` file [-style name[=value] [-style name[=value]]...] [options...]"
  exit 1
fi

FILE=$1
shift

if [ ! -r $FILE ]; then
  FILE=${FILE}.${DTD}
fi

if [ ! -r ${FILE} ]; then
  echo "Cannot open ${FILE}"
  exit 1
fi

SUFFIX=.`echo $FILE | awk 'BEGIN{FS="."} {print $NF}'`
BASE=`basename $FILE $SUFFIX`

echo "${DTD} -> ESIS ..." >&2
#if 1
${NSGMLS} $FILE > ${BASE}.esis
#else
# cat > /tmp/sgml2any.makefile <<EOF
# .SUFFIXES: ${SUFFIX} .esis

# ${BASE}.esis: ${FILE}
# 	-nsgmls ${FILE} > ${BASE}.esis
# EOF
# make -f /tmp/sgml2any.makefile ${BASE}.esis
# rm -f /tmp/sgml2any.makefile
#endif

if [ "${BACKEND}" != "esis" ]; then
  echo "ESIS -> ${BACKEND} ..." >&2
  TMP_SCRIPT=/tmp/sgml2any.script.$$
  rm -f ${TMP_SCRIPT}
  touch ${TMP_SCRIPT}

  cat <<EOF >> ${TMP_SCRIPT}
require TEItools.tcl
set TEItools_style_search_path `pwd`:${SITE_PATH}/${DTD}/${BACKEND}/styles:${SGML_HOME}/${DTD}/${BACKEND}/styles

EOF

  while [ "$1" = "-style" ]; do
    echo "TEItools_load_style $2" >> ${TMP_SCRIPT}
    shift; shift
  done

  echo "puts {}" >> ${TMP_SCRIPT}
    
  cat ${SCRIPT} >> ${TMP_SCRIPT}
  
  echo "TEItools_execute_style_scripts" >> ${TMP_SCRIPT}

  ${COSTSH} -S ${TMP_SCRIPT} ${BASE} $* < ${BASE}.esis
  rm -f ${TMP_SCRIPT}
  rm -f ${BASE}.esis
fi
echo >&2
echo 'done.' >&2
exit 0
