#!/bin/bash



. /etc/opals/opalsrc

CONF_FILES='false'
SQL='false'
while getopts 'c:d:fsh' option; do
  case $option in
    f) CONF_FILES='true'
      ;;
    c) SITE_CODE=${OPTARG// }
      ;;
    d) DEST_HOST=${OPTARG// }
      ;;
    s) SQL='true'
      ;;
    h) cat <<_HELP_
NAME
        site-sync - Sync OPALS site to a remote server.
SYNOPSIS
        site-sync -c SITE_CODE -d DEST_HOST [fsh]
DESCRIPTION
        Sync data, configuration files of an OPALS site to a remote server.
        -c
            OPALS site code, usually a file name in /etc/opals/conf/.
        -d
            Destination host.
        -f
            Sync /etc/opals/conf/SITE_CODE and related Apach virtual host config file.
        -s
            Dump and sync SQL data to /tmp/ on destination host.
        -h
            Show help.
EXAMPLE
        for i in /etc/opals/conf/{PATTERN1,PATTERN2}*; do
          $0 -c \$(basename \$i) -d DEST_HOST -s
        done

AUTHOR
        Written by Thien Ho <ctho@bibliofiche.com>.
BUGS
        Report bugs to Thien Ho <ctho@bibliofiche.com>.
COPYRIGHT
        Copyright © 2010 Free Software Foundation, Inc.  License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
        This is free software: you are free to change and redistribute it.  There is NO WARRANTY, to the extent permitted by law.
_HELP_
      exit 0
      ;;
    *) echo Invalid option.
      exit 1
      ;;
  esac
done

if [[ -z ${SITE_CODE} || ! -f /etc/opals/conf/${SITE_CODE} ]]; then
  echo Invalid site code: ${SITE_CODE}.
  exit 2
fi

if [[ -z ${DEST_HOST} ]]; then
  echo Invalid destination host: ${DEST_HOST}.
  exit 3
fi

if [[ ${SQL} == 'true' ]]; then
  echo ${SITE_CODE}: dump MySQL...
  mysqldump -h${sql_server_host} -ubackup -p${sql_backup_pass} ${SITE_CODE}>/tmp/${SITE_CODE}.sql
  rsync -av /tmp/${SITE_CODE}.sql ${DEST_HOST}:/tmp/
fi

echo ${SITE_CODE}: sync data...
for i in \
    /data/idzebra/210/record/${SITE_CODE}/\
    /data/opals/counter/${SITE_CODE}.cnt\
    /data/opals/export/${SITE_CODE}/\
    /data/opals/import/${SITE_CODE}/\
    /data/opals/uploadDoc/${SITE_CODE}/\
    /data/solr/${SITE_CODE}/
do
  if [[ -a $i ]]; then
    rsync -av --delete $i ${DEST_HOST}:$i
  fi
done

if [[ ${CONF_FILES} == 'true' ]]; then
  for i in\
    /etc/opals/conf/${SITE_CODE}\
    $(grep -R /etc/opals/conf/${SITE_CODE} /etc/httpd/conf.d/opals/|cut -d: -f1)
  do
    if [[ -a $i ]]; then
      rsync -av --delete $i ${DEST_HOST}:$i
    fi
  done
fi

exit 0
