
#!/bin/sh
# File	: proc_oud-papier-planning.sh
# By	: MaartenDeBoer.nl, 210307
# Subject	: Script to process (ViJoS-)oud-papier-planning (CSV-)data
#(0.2),210308	: Added dir
#(0.3),210309	: Added new
PGM=`basename $0|cut -d\. -f1`
VER="0.3"
TMP="/tmp/${PGM}.$$"
BASEDIR="${HOME}/oud-papier-planning"
LOG="${BASEDIR}/log/${PGM}.log"

# List of known Mail Addresses
KNOWNMAILADDRS="${BASEDIR}/etc/${PGM}.knownmailaddrs"
MAILTO="maarten@agrarix.it"
COMMAND=""
FROM=""
DATI="`date +%Y-%m-%d-%H-%M-%S`"
UPDATE_COMMAND="${BASEDIR}/bin/upd_oud-papier-planning.sh"
DATADIR="${BASEDIR}/data"
HISTORYDIR="${BASEDIR}/history"
SUBJECT=""
INDIR="${BASEDIR}/input"
BCKDIR="${BASEDIR}/backup"
CSVFILE="ViJoS_oud_papier_ophalen.csv"

USAGE()
{
  echo "Usage: ${PGM} [<options>]"
  echo "  Version: ${VER}"
  echo "  options              :"
  echo "    -c | --cmd         : CoMmanD"
  echo "    -d | --dati        : Dati (for processing the input/ file)"
  echo "    -f | --from        : From-address"
  echo "    -h | --help        : this help"
  echo "    -V                 : Version"
  echo "    -x                 : set -x"
}
while [ ${#} -ge 1 ]
  do
  case ${1} in
    -c | --cmd) COMMAND=${2}; shift ;;
    -d | --dati) DATI=${2}; shift ;;
    -f | --from) FROM=${2}; shift ;;
    -h | --help) USAGE; exit 1 ;;
    -V) echo "${PGM}: v${VER}"; exit 3 ;;
    -x)  set -x ;;
    *)  echo "Option ${1} not known."; USAGE; exit 1 ;;
  esac
    shift
done


echo "`date` ${PGM} v${VER} started. (FROM=${FROM} CMD=${COMMAND})"|tee -a ${LOG}
if [ "${FROM}" = "" ]; then
  echo "  No FROM address. Exiting ..."|tee -a ${LOG}
  exit 2
fi
if [ ! -d ${INDIR} ] || [ ! -d ${DATADIR} ] || [ ! -d ${HISTORYDIR} ] || [ ! -d ${BCKDIR} ]  ; then
  echo "  No INDIR (${INDIR}) or DATADIR (${DATADIR}) or HISTORYDIR (${HISTORYDIR}) or BCKDIR (${BCKDIR}). Exiting ..."|tee -a ${LOG}
  exit 3
fi

# MAIN
touch ${TMP}

# Commands from the mail. Parsed via ${CMD}
case ${CMD} in
  csvfile)
    SUBJECT="oud-papier-planning: CSVFILE [${PGM} v${VER}]"
    ATTACHMENT="${DATADIR}/${CSVFILE}"
    echo "${ATTACHMENT}:" >> ${TMP}

    ;;  
  new)
    SUBJECT="oud-papier-planning: NEW [${PGM} v${VER}]"
    cd ${INDIR}
    if [ -f ${CSVFILE} ]; then
      echo "  Input (csv)file (${CSVFILE}) found. Processing. And moved to history ${HISTORYDIR}." >> ${TMP}
# Make backup 1st
      cp ${DATADIR}/${CSVFILE} ${BCKDIR}/${DATI}_${CSVFILE}
# Check if line startes file date (dd-mm-2yyy)
      cat ${CSVFILE}|grep -v ^#|grep "^[0-9][0-9]-[0-1][0-9]-[2][0-9][0-9][0-9];" > ${DATADIR}/${CSVFILE}
      echo "ls -l of ${DATADIR} : " >> ${TMP}
      ls -l ${DATADIR} >> ${TMP}
      mv ${CSVFILE} ${HISTORYDIR}/${DATI}_${CSVFILE}

    else
      echo "  NO input (csv)file (${CSVFILE}) found. So, not be able to process." >> ${TMP}
    fi  # -f ${INFILE}
    ;;
    
  indir)
    SUBJECT="oud-papier-planning: INDIR [${PGM} v${VER}]"
    echo "INDIR:" >> ${TMP}
    cd ${INDIR}
    echo "`pwd`" >> ${TMP}
    echo "`ls -l`" >> ${TMP}
    ;;
  datadir)
    SUBJECT="oud-papier-planning: DATADIR [${PGM} v${VER}]"
    echo "DATADIR:" >> ${TMP}
    cd ${DATADIR}
    echo "`pwd`" >> ${TMP}
    echo "`ls -l`" >> ${TMP}
    ;;
  update)
    SUBJECT="oud-papier-planning: UPDATE [${PGM} v${VER}]"
    if [ -x ${UPDATE_COMMAND} ]; then
      echo "Updating oud-papier-site (${UPDATE_COMMAND})" | tee ${LOG} >> ${TMP}
      ${UPDATE_COMMAND} >> ${TMP}
    else
      echo "  Script ${UPDATE_COMMAND} (for updating oud-papier-site) NOT found" |tee -a ${TMP} >> ${LOG}
    fi
    ;;
  help)
    SUBJECT="oud-papier-planning: HELP [${PGM} v${VER}]"
    echo "HELP:" >> ${TMP}
    echo "  Beschikbare commando's:" >> ${TMP}
    echo "    indir       : INDIRectory list." >> ${TMP}
    echo "    datadir     : DATADIRectory list." >> ${TMP}
    echo "    help        : Deze help." >> ${TMP}
    echo "    new         : Nieuw bestand toegevoed." >> ${TMP}
    echo "    update      : Update oud-papier-pagina." >> ${TMP}
    ;;
  *)  
    SUBJECT="oud-papier-planning: UNKNOWN [${PGM} v${VER}]"
    echo "  Command ${CMD} not known." >> ${TMP}
    echo "  Please use help in the subject." >> ${TMP}
    ;;
esac

# When data in TMP
if [ -s ${TMP} ]; then
  echo "" >> ${TMP}
  echo "---" >> ${TMP}
  echo "`date` by ${PGM} v${VER} at `hostname`" >> ${TMP}
  if [ -f ${KNOWNMAILADDRS} ]; then
    ANSW=`grep ^${FROM} ${KNOWNMAILADDRS}|grep -v "^#"`
    if [ "${ANSW}" != "" ]; then
      if [ "${ATTACHMENT}" != "" ] && [ -f ${ATTACHMENT} ]; then
        echo "`date` ${ATTACHMENT} attached."|mailx -A ${ATTACHMENT} -s "${SUBJECT}" ${FROM}
      else
        cat ${TMP}|mailx -s "${SUBJECT}" ${FROM}
        echo "  Mailed to ${FROM}"|tee -a ${LOG}
      fi
    else
      echo "Mail with unknown address (${FROM})"|mailx -s "Mail with unknown address [${PGM} v${VER}]" ${MAILTO}
      echo "  Mail from unknown address (${FROM}). Mailed to ${MAILTO}"|tee -a ${LOG}
    fi  # "${ANSW}" != "" 
  else
    cat ${TMP}|mailx -s "${SUBJECT}" ${FROM}
    echo "  Mailed to ${FROM}"|tee -a ${LOG}
  fi  # -f ${ETC}
fi  # -s TMP

rm ${TMP}
exit 0

