#!/bin/sh
#
# build-ead.sh
#
# Unpacks and installs ead-3.3.0.tgz package
#
# Compatable with v3.3.0
#

function exit_msg {
	echo "$1" 1>&2
	exit 1
}

function unpackcp {
  if [ ! -n $1 ]; then
    echo "unpackcp: missing source file argument"
    if [ ! -n $2 ]; then
      echo "unpackcp: missing destination file argument"
    fi
    echo "Usage: unpackcp SOURCE DESTINATION"
    exit 1
  fi
  cp $1 temp.in
  sed -e s@%%%C3HOME%%%@$C3HOME@ temp.in > temp.out && mv temp.out temp.in
  sed -e s@%%%C3HOST%%%@$C3HOST@ temp.in > temp.out && mv temp.out temp.in
  echo "\`$1' -> \`$2'"
  mv temp.in $2
}

# stuff for choosing dbname - not done yet
#if [[ -n $1 ]]
#  then
#    dbname=$1
#  else
#    dbname="ead"
#fi

C3HOME=`pwd`
C3HOST=`/sbin/ifconfig  | grep -E 'inet addr:' | grep -v '127.0.0.1' | grep -v '10.*' | awk '{ print $2}' | sed -e s/addr://`

# check for pre-requisites
myerr=0
if [ ! -d $C3HOME/install ] || [ ! -d $C3HOME/cheshire3 ]; then
    exit_msg "package cheshire3-base.tgz not installed"
fi
if [ ! -d $C3HOME/install/htdocs ]; then
   exit_msg "package cheshire3-web.tgz not installed"
fi
if [ ! -d $C3HOME/install/share/postgresql/data ]; then
    exit_msg "package cheshire3-sql.tgz not installed"
fi

mkdir -p build/ead-3.3
cd build/ead-3.3  || exit_msg "unable to create build dir for ead-3.3"

echo ""
echo "==================================="
echo ""
echo "Unpacking Cheshire3 for Archives..."
echo ""
echo "==================================="
echo ""

tar -xzf ../../ead-3.3.0.tgz

# OK, now we have to carefully and selectively copy all the stuff into it's final location
# code
cp -v ./cheshire3/code/*.py $C3HOME/cheshire3/code/
unpackcp ./cheshire3/code/zApacheHandler.py $C3HOME/cheshire3/code/zApacheHandler.py

# dbs/configs.d
mkdir -p $C3HOME/cheshire3/dbs/configs.d
unpackcp ./cheshire3/dbs/configs.d/db_ead.xml $C3HOME/cheshire3/dbs/configs.d/db_ead.xml

# dbs/ead               - base EAD database
mkdir -p $C3HOME/cheshire3/dbs/ead/data $C3HOME/cheshire3/dbs/ead/indexes $C3HOME/cheshire3/dbs/ead/stores
unpackcp ./cheshire3/dbs/ead/clear_dbs.sh $C3HOME/cheshire3/dbs/ead/clear_dbs.sh
chmod u+x $C3HOME/cheshire3/dbs/ead/clear_dbs.sh
cp -v ./cheshire3/dbs/ead/*.xml $C3HOME/cheshire3/dbs/ead/
cp -rv ./cheshire3/dbs/ead/configs.d $C3HOME/cheshire3/dbs/ead/configs.d
unpackcp ./cheshire3/dbs/ead/config.xml $C3HOME/cheshire3/dbs/ead/config.xml
unpackcp ./cheshire3/dbs/ead/configs.d/ingest.xml $C3HOME/cheshire3/dbs/ead/configs.d/ingest.xml
unpackcp ./cheshire3/dbs/ead/zeerex_oai.xml $C3HOME/cheshire3/dbs/ead/zeerex_oai.xml
unpackcp ./cheshire3/dbs/ead/zeerex_srw.xml $C3HOME/cheshire3/dbs/ead/zeerex_srw.xml
unpackcp ./cheshire3/dbs/ead/zeerex_z3950.xml $C3HOME/cheshire3/dbs/ead/zeerex_z3950.xml
unpackcp ./cheshire3/dbs/ead/run.py $C3HOME/cheshire3/dbs/ead/run.py

chmod u+x $C3HOME/cheshire3/dbs/ead/run.py
cp -v ./cheshire3/dbs/ead/stopwords.txt $C3HOME/cheshire3/dbs/ead/stopwords.txt

# dbs/ead/xsl
mkdir -p $C3HOME/cheshire3/dbs/ead/xsl
cp -v ./cheshire3/dbs/ead/xsl/*.xsl $C3HOME/cheshire3/dbs/ead/xsl/
unpackcp ./cheshire3/dbs/ead/xsl/full.xsl $C3HOME/cheshire3/dbs/ead/xsl/full.xsl
unpackcp ./cheshire3/dbs/ead/xsl/fullSplit.xsl $C3HOME/cheshire3/dbs/ead/xsl/fullSplit.xsl
unpackcp ./cheshire3/dbs/ead/xsl/configuration.xsl $C3HOME/cheshire3/dbs/ead/xsl/configuration.xsl

# dbs/ead/cluster       - subject clusters
mkdir -p $C3HOME/cheshire3/dbs/ead/cluster/indexes $C3HOME/cheshire3/dbs/ead/cluster/stores
unpackcp ./cheshire3/dbs/ead/cluster/clear_dbs.sh $C3HOME/cheshire3/dbs/ead/cluster/clear_dbs.sh
chmod u+x $C3HOME/cheshire3/dbs/ead/cluster/clear_dbs.sh
cp -v ./cheshire3/dbs/ead/cluster/*.xml $C3HOME/cheshire3/dbs/ead/cluster/
unpackcp ./cheshire3/dbs/ead/cluster/zeerex_srw.xml $C3HOME/cheshire3/dbs/ead/cluster/zeerex_srw.xml
unpackcp ./cheshire3/dbs/ead/cluster/zeerex_z3950.xml $C3HOME/cheshire3/dbs/ead/cluster/zeerex_z3950.xml

# www/ead               - web interface
mkdir -p $C3HOME/cheshire3/www/ead $C3HOME/cheshire3/www/ead/html $C3HOME/cheshire3/www/ead/css $C3HOME/cheshire3/www/ead/logs
unpackcp ./cheshire3/www/ead/buildCustomPages.py $C3HOME/cheshire3/www/ead/buildCustomPages.py
chmod u+x $C3HOME/cheshire3/www/ead/buildCustomPages.py
unpackcp ./cheshire3/www/ead/eadHandler.py $C3HOME/cheshire3/www/ead/eadHandler.py
unpackcp ./cheshire3/www/ead/eadAdminHandler.py $C3HOME/cheshire3/www/ead/eadAdminHandler.py
unpackcp ./cheshire3/www/ead/eadSearchHandler.py $C3HOME/cheshire3/www/ead/eadSearchHandler.py
unpackcp ./cheshire3/www/ead/htmlFragments.py $C3HOME/cheshire3/www/ead/htmlFragments.py
if [ -f $C3HOME/cheshire3/www/ead/localConfig.py ]
  then
    v1=`grep "Version:" $C3HOME/cheshire3/www/ead/localConfig.py`
    v2=`grep "Version:" ./cheshire3/www/ead/localConfig.py`
    # only copy if distro version newer than existing
    if [ "$v1" = "$v2" ]
      then
	echo "\`./cheshire3/www/ead/localConfig.py' -- NOT COPIED, latest version already installed"
      else
	# try and preserve changes made previously
        mv $C3HOME/cheshire3/www/ead/localConfig.py $C3HOME/cheshire3/www/ead/localConfig.py.PREV
        unpackcp ./cheshire3/www/ead/localConfig.py $C3HOME/cheshire3/www/ead/localConfig.py
    fi
  else
    unpackcp ./cheshire3/www/ead/localConfig.py $C3HOME/cheshire3/www/ead/localConfig.py
fi
# Preserve customized html
if [ -f $C3HOME/cheshire3/www/ead/html/template.ssi ]
  then
    mv $C3HOME/cheshire3/www/ead/html/template.ssi $C3HOME/cheshire3/www/ead/html/template.ssi.PREV
fi
if [ -f $C3HOME/cheshire3/www/ead/html/header.html ]
  then
    mv $C3HOME/cheshire3/www/ead/html/header.html $C3HOME/cheshire3/www/ead/html/header.html.PREV
fi
if [ -f $C3HOME/cheshire3/www/ead/html/index.html ]
  then
    mv $C3HOME/cheshire3/www/ead/html/index.html $C3HOME/cheshire3/www/ead/html/index.html.PREV
fi

cp -v ./cheshire3/www/ead/html/*.* $C3HOME/cheshire3/www/ead/html/
cp -v ./cheshire3/www/ead/css/*.* $C3HOME/cheshire3/www/ead/css/
cp -v ./cheshire3/www/ead/javascript/*.* $C3HOME/cheshire3/www/ead/javascript/
# install/htdocs
mkdir -p $C3HOME/install/htdocs/ead/html $C3HOME/install/htdocs/ead/tocs
cp -v ./install/htdocs/ead/*.html $C3HOME/install/htdocs/ead/
ln -s $C3HOME/cheshire3/www/ead/css $C3HOME/install/htdocs/ead/
# javascript

# XXX this will be moving shortly
mkdir -p $C3HOME/install/htdocs/javascript
cp -v ./install/htdocs/javascript/*.js $C3HOME/install/htdocs/javascript/
# XXX
#ln -s $C3HOME/cheshire3/www/ead/js $C3HOME/install/htdocs/ead/
# images
mkdir -p $C3HOME/install/htdocs/images
cp -v ./install/htdocs/images/* $C3HOME/install/htdocs/images/
# robots file
echo ""
if [ -f $C3HOME/install/htdocs/robots.txt ]
  then
    echo "robots.txt file already exists, skipping..."
  else
    echo "creating robots.txt file"
    echo "# robots.txt file for Cheshire3 Apache Server" >> $C3HOME/install/htdocs/robots.txt
    echo "User-agent: *" >> $C3HOME/install/htdocs/robots.txt
    echo "Disallow: /services/   # SRU interface" >> $C3HOME/install/htdocs/robots.txt
    echo "Disallow: /OAI/        # OAI interface" >> $C3HOME/install/htdocs/robots.txt
    echo "Disallow: /ead/search/ # Search-Engine interface - please do not crawl." >> $C3HOME/install/htdocs/robots.txt
    echo "Disallow: /ead/admin/  # Authenticated administration interface" >> $C3HOME/install/htdocs/robots.txt
    echo "" >> $C3HOME/install/htdocs/robots.txt
fi
echo ""

# install/conf.d         - Apache subconfigs
mkdir -p $C3HOME/install/conf.d/
unpackcp ./install/conf.d/ead.conf $C3HOME/install/conf.d/ead.conf

echo ""
echo "==================================="
echo ""
echo "DONE!"
echo ""
echo "You should now restart Apache."
echo ""
echo "==================================="
echo ""

# return to cheshire3 root
cd $C3HOME


