#!/bin/bash
#
# build-ead.sh
#
# Unpacks and installs ead-3.5.0.tgz package
#
# Compatable with v3.5.x
#


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
  sed -e s@138.253.x.x@$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:// | head -1`

# 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.5
cd build/ead-3.5  || exit_msg "unable to create build dir for ead-3.5"

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

tar -xzf ../../ead-3.5.0.tgz

# OK, now we have to carefully and selectively copy all the stuff into it's final location

mkdir $C3HOME/cheshire3/configs/extra
cp ./cheshire3/configs/extra/web.xml $C3HOME/cheshire3/configs/extra/

# 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/
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
unpackcp ./cheshire3/dbs/ead/search.py $C3HOME/cheshire3/dbs/ead/search.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/img $C3HOME/cheshire3/www/ead/js $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/eadEditingHandler.py $C3HOME/cheshire3/www/ead/eadEditingHandler.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

# Cheshire3 web-interface stuff
# HMTL
cp -v ./cheshire3/www/ead/html/*.* $C3HOME/cheshire3/www/ead/html/
# CSS
cp -v ./cheshire3/www/ead/css/*.* $C3HOME/cheshire3/www/ead/css/
# images
cp -v ./cheshire3/www/ead/img/* $C3HOME/cheshire3/www/ead/img/
# JavaScript
cp -v ./cheshire3/www/ead/js/*.* $C3HOME/cheshire3/www/ead/js/

# 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/
ln -s $C3HOME/cheshire3/www/ead/img $C3HOME/install/htdocs/ead/
ln -s $C3HOME/cheshire3/www/ead/js $C3HOME/install/htdocs/ead/

# robots file
echo ""

if [ -f $C3HOME/install/htdocs/robots.txt ]
  then
    echo "robots.txt already exists"
  else
    echo "creating robots.txt"
    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: /ajax/       # ajax interface" >> $C3HOME/install/htdocs/robots.txt
fi
eaddone=`grep "/ead/" $C3HOME/install/htdocs/robots.txt`
if [ "$eaddone" ]
  then
    echo "robots.txt already contains EAD entries"
  else
    echo "adding EAD entries to robots.txt"
    echo "" >> $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 "Disallow: /ead/edit/   # Authenticated editing 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/cheshire3.conf $C3HOME/install/conf.d/cheshire3.conf
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


